通用存储库应直接使用工作单元或DbContext

时间:2013-01-06 05:52:24

标签: entity-framework-4 repository-pattern unit-of-work

  1. 当我使用Generic Repository和Entity Framework时,我是否需要使用工作单元,因为据我所知,UOW协调多个存储库之间的协调。或者让Generic Repository直接在DbContext上工作,因为不需要UOW。

  2. 最佳做法是:为每种实体类型使用通用存储库或实现存储库类。

1 个答案:

答案 0 :(得分:2)

我不知道您要引用哪个通用存储库,但这是我对通用存储库的体验。

通常,EntityFramework不需要工作单元或存储库。 EntityFramework可以做到这一切。

然而,在我的第一个EF项目中,我发现自己创建了一个分发并保存所有实体的工厂类。该课程没有完成一个工作单元的完整工作,也没有提供像存储库那样的标准化界面。庞大的阶层需要一些结构。因此,我个人的建议是针对所有实体的一个大型存储库,这个存储库将会增长并且将越来越难以维护。如果你想到这样一个类,你最好使用EF。

在第二个项目中,我使用UnitOfWork和通用存储库。这更适合我的目的。一个工作单元用于执行保存操作,保存一个保存操作中的所有更改以及所有存储库的相同界面。其中两类我只需要改变工作单元以容纳一个新实体。工作单元也隐藏了dbContext的使用,我认为这会导致丑陋的代码。

我不使用花哨的单位工作或通用存储库(我在http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application找到我的),足以在实施中获得一些指导。

我同意格特的直接回复:这完全取决于个人偏好。