当我将通用存储库与实体框架一起使用时,我是否需要使用工作单元,因为据我所知,UOW 在多个存储库之间进行协调。或者让通用存储库直接在 DbContext 上工作,因为不需要 UOW。
最佳实践:使用通用存储库或为每个实体类型实现存储库类。
1 回答
我不知道您指的是哪个通用存储库,但这是我对通用存储库的体验。
通常,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),足以在实施中获得一些指导。
我同意格特立即回复的观点:这完全取决于个人喜好。