背景:实体framework4.1和MVC4
我的设置有模型实体,然后是通用存储库,然后是从通用存储库继承的 UserRepository、ProductRepository 等特定存储库的模型。
然后,我有一个使用这些存储库以及任何业务逻辑的服务层,并且可以在此处访问 UnitOfWork 对象以调用 Commit。
使用工作单元模式,我的问题是:
让存储库层可以访问 UnitOfWork 对象是糟糕的设计吗?
对我来说,这似乎是一个“泄漏”,因为当你甚至没有意识到时,事情可能已经发生了。
这个对吗?
例如
public class ProductService
{
public void SaveProduct(Product product)
{
try
{
productRepository.Save(product);
statsRepository.Update(product);
this.UnitOfWork.Commit();
} catch(..)
{
//
}
finally()
{
//
}
}
}
现在,如果其中任何一个调用失败,则不会调用 commit。
但是,如果在 abcRepository 层中您可以访问 UofW 对象并调用了 commit,那么它的行为方式就会不一致。