0

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

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

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

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

提前谢谢

4

2 回答 2

2

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

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

于 2013-11-12T09:31:21.723 回答
0

你说的对。

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

于 2013-11-12T09:30:22.380 回答