【问题标题】:Can we call EF DbContext to UnitOfWork, and its Set<T> to Repository?我们可以将 EF DbContext 调用到 UnitOfWork,并将其 Set<T> 调用到存储库吗?
【发布时间】:2013-11-12 09:25:31
【问题描述】:

如果是,那么我们就完成了……在使用 EF(带有 DbContext)时无需设计和实现 repos 和工作单元

也许我错过了一些东西,但对我来说,DbContext 实现了一个完美的 UnitOfWork(接口丢失了...... :-( )并且它的 .Set 是实体 T 的通用存储库。

为什么人们继续实施正在使用/拥有上下文的存储库,并实施正在使用/拥有多个存储库之一的工作单元?他们使用相同设计模式的实现来实现设计模式。

(我知道:EF DbContext 没有实现适合 UnitOfWork/Repo 模式的可用接口,但除此之外,我错过了什么吗?)

提前谢谢

【问题讨论】:

标签: entity-framework design-patterns repository-pattern dbcontext unit-of-work


【解决方案1】:

是的,它们是工作单元和存储库模式的实现。
我认为您需要使用自己的存储库或工作单元的唯一情况是当您计划将数据访问逻辑与存储库级别分开时。这意味着如果您以后打算使用其他方式访问数据库(如 Nhibernate),那么很容易拥有自己的存储库层。

而且,如果您不仅需要实体框架,还需要其他类型的数据源,那么最好为您的数据访问提供一个抽象层,像这样。

【讨论】:

    【解决方案2】:

    你是对的。

    但是,如果人们错过了某些功能(例如 DbSet 是过于通用的存储库,缺乏查询重用的可能性(例如使用规范模式)),他们会在现有的基础上实现他们的自定义版本。

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2012-02-23
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      相关资源
      最近更新 更多