【发布时间】:2013-07-17 20:51:38
【问题描述】:
我目前正在使用具有通用存储库和工作单元模式的实体框架。我的模型类似于this article中描述的模型
我过去曾使用过通用存储库,并且非常喜欢它可以提供的全局功能。但是,在将它与 Entity Framework 一起使用时,我似乎每天都会遇到更多问题。在处理父/子/连接关系时,这些问题似乎更加突出。
使用带有 EF 的通用存储库开始在我的嘴里留下不好的味道,我开始认为使用带有 EF 的通用存储库是错误的方法。
有人可以帮我指引正确的方向吗?
【问题讨论】:
-
这取决于您拥有通用存储库/UoW 的目标。如果您认为
DbSet<TEntity>已经是一个通用存储库,并且DbContext(SaveChanges) 是您的 UoW,那么您可能会复制这些概念。它可能会使测试更容易,但代价是具有另一个抽象级别。我将它用于我的 Repo / UoW,并用于测试我使用effort.codeplex.com -
我使用通用存储库的唯一真正目的是拥有全局的通用 CRUD 方法。
-
DbSet<>已经完成了这些。在通用存储库上进行测试更容易,并且可以解耦对实体框架的依赖,如果这很重要的话。 -
性能和复杂性也是需要考虑的事情。通过 EF 进行数据访问比 ADO.net 慢得多,并且 EF 为您的应用程序增加了一层额外的复杂性,最终使您对 DAL 的控制更少。
-
@kmdsax 我认为问题是是否使用带有 EF 的存储库,而不是是否使用 EF。
标签: c# entity-framework generics unit-of-work