C# 不同DbContext的UnitOfWork
我有类似以下的东西C# 不同DbContext的UnitOfWork,c#,generics,unit-of-work,C#,Generics,Unit Of Work,我有类似以下的东西 //Following is the Constructor public UnitOfWork(IEmployeeContext context) { this._context = context; } #endregion public void Dispose() { this._context.Dispose(); } public void Commit()
//Following is the Constructor
public UnitOfWork(IEmployeeContext context)
{
this._context = context;
}
#endregion
public void Dispose()
{
this._context.Dispose();
}
public void Commit()
{
this._context.SaveChanges();
}
public IEmployeeRepository EmployeeRepository
{
{
return _employeeRepository??
(_employeeRepository= new EmployeeRepository(_context));
}
}
现在的问题是我有另一个不是基于IEmployeeContext的存储库。让我们将该上下文称为IOfficeContext,以便
get
{
return _officeRepository??
(_officeRepository= new OfficeRepository(_context));
}
传递给OfficePository的上下文是IOfficeContext。我应该为他们安排两个独立的工作单元吗?或者可以在这里做一些其他聪明的事情?您可以有一个通用的界面:
public interface IContext
{
void Dispose();
void SaveChanges();
}
并使
IEEmployeeContext
和IOfficeContext
从中继承。然后,UnitOfWork
只能知道IContext
并且能够处理这两个问题。很可能它们都是从DbContext
继承的。目前我的IUnitOfWork已经离开了employeeRepository employeeRepository{get;}和IOfficepository Officepository{get;}这又是如何安排的呢?这是不是另一种方法,先有一个基本的工作单元,然后每个工作单元有两个独立的工作单元context@InTheWorldOfCodingApplications,是的,再仔细想想,如果这些存储库仅由相应的上下文使用,那么您应该为每个上下文都有一个基本UOW及其继承器。但是,如果这些存储库可以共享(可能现在没有,但有这种可能性),那么您可以在UOW中同时使用它们。它们对应于不同的数据库,并且永远不会被共享。我还没弄清楚泛型到底会在这里发挥什么作用