Я создаю свое первое N-уровневое приложение MVC, и я столкнулся с препятствием в том, как управлять несколькими DbContexts
при первом подходе к базе данных.
I есть следующие уровни
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();
}
}