3

虽然我处理域驱动设计 (DDD) 已经有一段时间了,但我对实体框架 (EF) 还是比较陌生,在 Visual Studio 中使用实体框架设计器时我想到的一个问题是如何聚合应在 EF 中表示/建模。

遵循 DDD 最佳实践,实体应仅引用同一聚合内的其他实体(或值对象),并且对其他实体的引用仅限于聚合的根实体(聚合根)。但是,我在 EF 中看不到任何这些概念(即,所有实体都被同等对待,因此对实体之间的引用没有任何限制)。

因此,我在问:我是否错过了 EF 中的某些内容,或者它是否完全不知道聚合、聚合根和实体之间的引用?如果是后者,那么在使用实体框架时如何对聚合进行建模?

4

2 回答 2

2

我认为 DDD 是其他抽象级别,所以我的回答是默认情况下没有 EF 不遵循这些实践。您可以对实体和存储库进行建模以遵循 DDD。您将使用存储库来构建聚合根,其中加载的相关实体仅与当前聚合根相关,并且您将使用域服务来处理不同的存储库。

于 2010-09-07T18:19:18.057 回答
1

我只是想纠正一个小(但非常重要的细节):

您声明“实体应仅引用同一聚合中的其他实体(或值对象)”。

当然,这可能有一些争论,但它比 DDD 上的至少一个资源建议的更严格:“应该允许聚合内的对象持有对其他聚合根的引用。” (Avram 和 Marinescu 的“领域驱动设计快速”)。

最好的问候,西蒙

于 2010-09-30T12:28:17.157 回答