如何使用Entity Framework建模聚合?

时间:2010-09-07 17:36:52

标签: entity-framework domain-driven-design aggregateroot

虽然我一直在处理域驱动设计(DDD)很长一段时间,但我对Entity Framework(EF)相对较新,在Visual中使用Entity Framework Designer时我想到了一个问题。 Studio是如何在EF中表示/建模聚合的。

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

因此,我问:我是否错过了EF中的某些内容,或者它是否完全不了解Aggregates,Aggregate Roots和实体之间的引用?如果后者是这样的话,你如何建模?使用Entity Framework时的聚合?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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

当然,可能会有一些争论,但它比DDD上的至少一个资源更加严格:“聚合中的对象应该被允许保留 引用其他Aggregates的根。“(Avram& Marinescu的”快速领域设计“)。

祝你好运, 西蒙