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中同时使用它们。它们对应于不同的数据库,并且永远不会被共享。我还没弄清楚泛型到底会在这里发挥什么作用