1

背景:实体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,那么它的行为方式就会不一致。

4

2 回答 2

0

我认为存储库不应该访问 uow,正如Matthew已经评论的那样。您的问题几乎可以自行回答。

回复:现在,如果其中任何一个调用失败,则不会调用 commit。-

一般来说,这很好,对吧?您不想部分提交更改。

于 2013-06-26T02:26:48.123 回答
0

我认为这是实现存储库和 UnitofWork 的正确方法

http://code.cmsstores.com/implementing-unit-of-work-pattern-dot-net/

于 2013-05-02T18:58:53.897 回答