我们在当前项目中使用 DDD 实践。我们的问题是我们有很多有界上下文,每个上下文都是包含其持久层的分层架构。问题是,例如在有界上下文中,我们需要从其他有界上下文中引用数据,例如IdentityAccess上下文是负责管理用户的上下文,因此它包含UserModel但我们需要在另一个有界上下文中引用用户因此,我们创建了一个SubscriberUserModel,其中包含来自该有界上下文中用户模型的子集信息。我们有一个迁移项目它包含来自我们所有有界上下文的所有模型,这些模型用于管理迁移和我们的数据库,但我们面临一个问题。我们不能拥有多个引用同一个表的实体我的问题是如何以智能方式处理此问题这是我们尝试生成新迁移时的 EF 异常
问问题
948 次
1 回答
4
答案是不要!
从 DDD 的角度来看,你做错了。有界上下文不应与您的情况类似的关系绑定,而是与另一个上下文中的表无关的独立表。
您应该做的是在上下文 A 中创建一个用户,该用户具有在上下文 A 中存在的必要属性。来自上下文 A 的用户信息应该通过事件、队列、Web 服务、某种触发器从上下文 B 传输等等,但它们不应该受到关系的限制。
这样,您可能会从上下文 B 复制与上下文 A 中的实体和业务流程无关的不必要数据。尽管它们具有相同的名称(用户),但它们在上下文中的角色和逻辑完全不同。不要让那个愚弄你!
朱莉·勒曼( Julie Lerman)在 Pluralsight 上制作了一个关于这个主题的好视频(不是广告 :))。
于 2017-04-12T13:14:40.437 回答