【发布时间】:2020-06-14 05:44:49
【问题描述】:
我还没有找到具体的例子。我知道每个有界上下文都有自己的实体版本,您不应该跨上下文共享实体。但是对于使用像 EF 这样的 ORM,我该如何管理呢?
例如,下面是我的实体和它们存在的限界上下文:
成分(实体有界上下文 A)
配方(实体有界上下文 b)
成分(实体有界上下文 b)
MenuItem(聚合有界上下文 b)
现在每个有界上下文都有自己的成分版本。但是由于我在 EF 中有一个单独的数据库上下文来管理它,我该如何安排呢?我正在使用 CQRS,因此我可以在需要时触发事件。我的计划是在我的 Recipe 实体中维护一个 id 列表,并从数据库中提取相关的成分,这样数据就不会重复。
但我不确定我的数据重复问题是否有效。在我上面的例子中,假设一家公司销售原料,但也有预设食谱(带有一份原料清单),可以在食品摊上出售。
在一个上下文中,成分与另一个实体没有关系,而在另一个上下文中,它是一个子实体(在聚合中)。我可以看到它应该如何设计(有界上下文中的单独实体)但是当涉及到数据库时,这实际上是如何设置的?如果需要在上下文 A 和上下文 B 中跟踪成分的属性/领域知识不同怎么办?这最终会成为一个单独的表吗?我对此有点迷茫。
编辑: 请记住,我在这里只使用 1 个数据库。我知道通常每个有界上下文都有单独的数据库以避免这种情况,但想知道如何通过 1 个数据库来实现。
【问题讨论】:
标签: c# entity-framework domain-driven-design cqrs