6

我正在尝试在我的 MVC Web 应用程序中实现工作单元/存储库模式。

由于 DbContext 本身是一个工作单元,因此我想将它与我自己的 UOW 混合用于测试和解耦目的(将业务层与 EF 解耦)。那么将我DbContext的 UOW 类包装在如下所示的类中是否是个好主意?

例子:

为了清楚起见,代码减少了

public interface IUnitOfWork
{
    void Save();
}

public MyContext : DbContext
{
    // DbSets here
}

public UnitOfWork : IUnitOfWork
{
    public MyContext myContext { get; set; }

    void Save()
    {
        myContext.SaveChanges();
    }
}

然后我会调用UnitOfWork实例来执行数据操作。

提前非常感谢:-)

4

1 回答 1

4

我取决于您要完成的工作。

我想在实体框架和业务逻辑之间创建一个抽象层,那么是的,这是个好主意。但是你必须做一个完整的抽象,这意味着你的存储库类不能公开IQueryable<T>

如果您不创建完整的抽象,那么我看不出有任何理由将 DbContext 包装在工作单元类中。

于 2013-08-27T05:29:23.220 回答