【发布时间】:2015-04-06 17:51:39
【问题描述】:
对此有很多问题,但据我所知,没有一个可以解决这个问题。
域对象使用 EF 实体来水合它是错误的吗?一方面,这与纪念品非常相似。可以将 EF 实体视为 DTO 或活动记录。
另一方面,这似乎将域与 DAL 耦合(因为 EF 实体可以被视为 DAO)
编辑为了澄清我在这里询问的内容......我有一个不知道我的数据访问层的域模型。存储库返回我的 DO,但这些 DO 是使用 DTO 放在一起的。 DTO 是专门为存储库用来为 DO 补充水分而构建的属性包。因此,即使我的 DO 不依赖于 EF 实体,它们也依赖于 DTO,其唯一工作是从 EF 实体进行映射......所以我创建了专门用于设施水化的代码。这对我来说似乎有点臭。
我绝对不是在问 DO 是否应该使用 EF 来保持自身。我在问我是否可以从 EF 实体中读取以补充 DO。
【问题讨论】:
-
通常,您从 EF 实体到域实体的转换将在您的持久层中,在存储库方法中完成。您的域实体对 EF 之类的东西一无所知。
-
@Matthew 你为什么要那样做?如果将域耦合到 DAL 有什么好处?
-
@guillaume31 没有任何好处。我的替代方案是什么?我创建了一个 DTO,它是实体的深层副本,并使用它?
-
@AdrianThompsonPhillips 同意,并且该实体是 POCO...我在想的问题是我应该应该使用什么?
-
@Matthew 如何使用 EF Code First + fluent API 直接映射到您的域对象?此外,“水合物”意味着根据数据库中的数据填充对象,我从未见过它以相反的方式使用。你到底想做什么?
标签: .net entity-framework domain-driven-design