Background: Entity framework4.1 and 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将不会被调用。
但是,如果在abrepository层,您可以访问UofW对象并调用commit,那么它的行为将不一致。
我认为这是实现repository和UnitofWork的正确方式
http://code.cmsstores.com/implementing-unit-of-work-pattern-dot-net/我认为存储库不应该访问u-o-w,正如Matthew已经评论的那样。你的问题基本上是不言自明的。
Re: 现在,如果其中任何一个调用失败,commit将不会被调用。 -
总的来说,这是好的,对吧?您不希望部分地提交更改。