Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Эммм… Транзакции?
вообще говоря транзакции — дело клиентского по отношению к DAL/репозиторию/следующему-баззвордному-паттерну кода.
public T GetObjectByKey(object id) where T : EntityObject
{
string entitySetName = this.MetadataWorkspace.GetEntityContainer(this.DefaultContainerName, DataSpace.CSpace)
.BaseEntitySets.Where(bes => bes.ElementType.Name == typeof(T).Name)
.FirstOrDefault().Name;
string entitySetKeyName = string.Format("{0}.{1}", this.DefaultContainerName, entitySetName);
EntityKey key = new EntityKey(entitySetKeyName, "ID", id);
return (T)this.GetObjectByKey(key);
}
3. Получается, что у Вас unitRepository и cityRepository каждый имеет СВОИ/РАЗЛИЧНЫЕ экземпляры DBContainer(). Это, конечно, вариант и все зависит от требований конкретной задачи, но я бы еще добавил бы в конструктор BaseRepository параметра типа DBContainer: вдруг понадобится работать с уже ранее созданным экземпляром DBContainer. Имхо.
Универсальный репозиторий ADO.NET Entity