Вот пример, который я использовал в прошлом (который также отделяет ваш код от любой прямой зависимости от Entity Framework).
даю свое первое приложение N-Tier MVC, и я столкнулся с проблемой, как управлять несколькимиDbContexts
с моей базой данных первый подход.
У меня есть следующие слои
Presentation
Service (WCF)
Business
Data Access
Мне не нужна ссылка на сущностную структуру в моем сервисном слое, но я не вижу, как создать интерфейс или что-то такое, чтобы управлять двумя контекстами У меня это работает с одним контекстом, деформированным в IDatabaseFactory, но я не могу найти подход для управления двумя.
Ниже мойUnitOfWork
который создается в моем Service Ctor, но каждый раз, когда я смотрю на него, я все еще привязан кSiteModelContainer
, когда на самом деле у меня есть другой контекст.
public class UnitOfWork : IUnitOfWork
{
private SiteModelContainer _context;
private readonly IDatabaseFactory _databaseFactory;
protected SiteModelContainer SiteContext
{
get { return _context ?? (_context = _databaseFactory.Get()); }
}
public UnitOfWork(IDatabaseFactory factory)
{
_databaseFactory = factory;
_context = _databaseFactory.Get();
}
//More code
}
public class DatabaseFactory : Disposable, IDatabaseFactory
{
private SiteModelContainer _dataContext;
public SiteModelContainer Get()
{
return _dataContext ?? (_dataContext = new SiteModelContainer());
}
protected override void DisposeCore()
{
if (_dataContext != null)
_dataContext.Dispose();
}
}