【发布时间】:2019-03-14 14:25:02
【问题描述】:
在 DDD 中,实体和聚合之间存在区别。在 EFCore 中,我对使用私有集合和使用规范模式在需要时填充子实体的方法感到满意。同样,Julie Lerman 和其他人撰写了关于将 EF 应用于 DDD 的非常好的文章。
与实体相反,聚合可以/应该只保存对另一个聚合的 Id 引用,而不是导航属性,我们可以使用它通过 GetById() 调用通过它的存储库拉回导航属性。
更多的问题是确定聚合如何保存对聚合集合的 Id 引用的集合以及如何使用实体框架来实现这一点?
通常您会使用导航属性和外键进行设置。
public Class Foo
(
public List<Bar> Bars { get; set; }
)
但是,我希望与 DDD 保持一致。
public Class Foo
(
public List<int> BarIds { get; set; }
)
我不想拥有 Bar 聚合,因为它知道它与 Foo 有关系,因为它可以被许多其他聚合引用。
是不是你不能在聚合上拥有聚合 ID 的集合?
【问题讨论】:
标签: entity-framework-core domain-driven-design