我正在尝试在我的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
实例来执行数据操作。
提前感谢:-)
我取决于你想要完成什么。
如果你想在实体框架和业务逻辑之间创建一个抽象层,那么是的,这是个好主意。但是,您必须进行一个完整的抽象,这意味着您的存储库类不能公开IQueryable<T>
。
如果您没有创建一个完整的抽象,那么我看不出有任何理由将DbContext封装在工作单元类中。