DDD - 如何设计不同限界上下文之间的关联

2024-01-12

我已经设置了一个正在使用 ORM 填充的域项目。该域包含不同的聚合,每个聚合都有自己的根对象。 我的问题是应该如何处理跨越聚合边界的属性?

  • 这些属性是否应该简单地忽略边界,以便有界上下文 A 中的域对象可以引用上下文 B 中的对象?
  • 或者,是否应该没有从上下文 A 到 B 的直接链接,并且上下文 A 中的对象是否具有“int ContextBId”属性,可用于通过 B 聚合根从 B 获取域对象?
  • Or ...

一个例子:
上下文 A = 用户
情境 B = 游戏

在 - 的里面Users上下文有一个对象UserOwnedGames。这个对象有一个属性User这是对同一对象的引用Users语境。该对象还有一个属性Game这显然不在用户中,而是在Games语境。

这种关系会(或应该?)是什么样子?数据库中很清楚(即2个外键),但是代码应该是什么样的?


听起来像你的User上下文还需要一个Game实体。但请注意,这不一定相同Game实体是根Game语境。这两个有界上下文可能对什么有不同的想法Game是什么,以及它有什么属性。只有身份将两个 Game 对象联系在一起。

User Context
{
    Aggregate Root User
    {
        Identity;
        Name;
        OwnedGames : List of Game value entities
    }

    Value Entity Game
    {
        Identity;
        Name;
    }
}

Game Context
{
    Aggregate Root Game
    {
        Identity;
        Name;
        Owner : User value entity
        HighScore : int
        TimesPlayed : int
        ... A whole bunch of other properties which are not relevant in the User context
    }

    Value Entity User
    {
        Identity;
        Name;
        // No OwnedGames property, in this context we don't care about what other games the user owns.
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDD - 如何设计不同限界上下文之间的关联 的相关文章

  • Java的全栈框架[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个完整的 Java 堆栈框架 从持久性到视图生成 CRUD 我没有使用 Rails 风格框
  • DDD:用户聚合根与其他聚合中几乎所有实体之间的一对多关系

    我有以下 DDD 场景 分为以下聚合 User 各位朋友 用户协会 文件 供用户上传 画廊 文件分组 消息 用户通信 群组 用户可以创建并且其他成员可以加入 GroupMessages 发送给组中所有成员的消息 群组论坛 群组成员可以讨论各
  • DDD - 使用 Doctrine 2 的有界上下文之间的关联映射

    我正在努力理解使用 Doctrine 2 实现来自不同有界上下文的两个实体之间的关联映射的正确方法 假设有两个 User 和 Post 实体分别属于 User 和 Content 有界上下文 内容 上下文中还有一个 用户 概念 它通过多对一
  • 我可以在 DDD 中拥有“不完整”的聚合吗?

    DDD 规定您只能通过实体的聚合根来访问实体 举例来说 你有一个聚合根 X 它可能有一个lot子 Y 实体的数量 现在 对于某些场景 您一次只真正关心这些 Y 实体的子集 也许您将它们显示在分页列表或其他内容中 那么是否可以实现一个存储库
  • 用于办公管理应用程序无缝集成(和最终替换)的复杂(多模式)实体框架对象映射

    我是一个相当新手 狂热的程序员 这是我的第一个问题 但几个月来我一直在使用 stackoverflow 来获取有价值的信息 首先 一些背景 我目前在一家极小 我们目前运行一个相当过时 大约 2008 年 的医疗办公室管理系统 负责处理患者业
  • ASP.NET MVC Web 应用程序中视图逻辑和域逻辑之间的混淆

    我对域 应用程序逻辑和用户界面逻辑感到困惑 为了说明我想要确定的内容 我将在下面描述一个虚构的程序以供说明 1 想象一个带有一组 3 个级联下拉菜单的小型应用程序 当您选择一个下拉列表时 它会触发 jQuery Ajax GET 最终到达
  • 具有最佳实践的示例 N 层 ASP.NET MVC3 应用程序(使用 EF 4.1)

    我正在寻找一个演示最佳实践的示例 ASP NET MVC3 N 层应用程序 首先使用域驱动设计和实体框架 4 1 代码 我发现了以下内容 您推荐其中哪一个 或此列表中没有的其他任何一个 http efmvc codeplex com htt
  • .NET 中的 DDD / 聚合

    我一直在阅读 Evans 关于 DDD 的书 并且正在思考应该如何在 NET 中实现聚合 目前 我只能想出一种方法 将聚合隔离在单独的类库中 然而 这似乎有点矫枉过正 我更愿意将所有域对象保留在一个库中 我想知道是否有不同的方法 1 lib
  • 如何解决客户端-服务器应用程序中的无状态问题?

    我读过一些有关创建无状态网站的书籍 也读过一些有关有状态客户端应用程序的书籍 但是当您必须将两者结合起来时 就会出现很多复杂性 我们有一个 Flex 应用程序 需要通过 NET 服务将数据保存到数据库中 需要记住的事情是 并发 乐观 悲观
  • 使用 DDD 方法在 Python 中保留 POJO

    我正在尝试使用 DDD 模式创建 Flask 应用程序 DDD 的核心原则之一是将领域与持久性 基础设施 分离 我已在模块中定义了域模型 并将在基础设施模块中创建存储库 但是 我似乎找不到任何关于如何在 Python 中持久保存 POJO
  • 什么属于聚合根

    这是一个实用的领域驱动设计问题 从概念上讲 我认为我得到了聚合根 直到我去定义一个聚合根 我有一个 Employee 实体 它已作为聚合根出现 在商业领域 some员工可以记录与工作相关的违规行为 员工 违规行为 由于并非所有员工都受到此限
  • DDD:我真的需要加载聚合中的所有对象吗? (性能问题)

    在 DDD 中 存储库加载整个聚合 我们要么加载全部 要么不加载 这也意味着应该避免延迟加载 我关心的是性能方面的问题 如果这导致将数千个对象加载到内存中怎么办 例如 聚合Customer一万回来Orders 在这种情况下 是否意味着我需要
  • 首先是 DDD 数据库。如何处理聚合

    我正在尝试学习 DDD 的概念 我做了一个项目 我使用数据库优先方法 在基础设施中 我添加了一个 edmx 文件 我选择自动生成实体 现在在 域 中我正在尝试创建聚合 但在这里我遇到了一些问题 我正在尝试创建一个名为 User 的聚合 但
  • DDD 领域模型复杂验证

    我正在努力使用域驱动设计原则重写我的 ASP NET MVC 应用程序 我正在尝试验证我的用户实体 到目前为止 我能够验证基本规则 例如用户名和密码是非空 空白字符串 然而规则之一是 我需要确保用户名是唯一的 但是 我需要访问数据库才能执行
  • 寻找领域事件的例子

    有谁知道在哪里可以找到域事件实现的示例代码 如乌迪 达汉 http www udidahan com in 领域事件 救赎 http www udidahan com 2009 06 14 domain events salvation 在
  • 定时任务应该放在哪一层?

    我正在尝试使用分层架构来实现 DDD 应用程序 我有 基础设施层 实现应用程序的技术特定部分的层 领域层 包含领域模型的层 应用层 包含与领域模型交互的干扰的层 接口层 从外部接收事件的层 经典的 3 层 基础设施 架构非常清晰 但我的应用
  • 领域驱动设计 (Linq to SQL) - 如何删除聚合的某些部分?

    我似乎对整个 DDD LinqToSql 业务感到有点困惑 我正在使用 POCOS 和 linq to sql 构建一个系统 并且我有聚合根的存储库 因此 例如 如果您有 Order gt OrderLine 类 那么您就有了 Order
  • 如何使用 Spring Crud/Jpa Repository 实现 DDD

    我想通过使用 Spring 实现 DDD 来创建一个应用程序 假设我有一个业务实体 Customer 和一个接口 CustomerRepository 由于春天提供了CrudRepository and JpaRepository默认情况下
  • 是否可以在不改变作为框架一部分的 DDD 模型的情况下使用 NHibernate

    我挖掘了很多关于DDD方法 无处不在的语言 聚合 存储库等 我认为 与我读到的很多内容相反 实体应该有行为而不是不可知论 我看到的所有例子都倾向于呈现实体虚拟自动属性 and an 空构造函数 受保护或最糟糕的是公开 就是这样 我认为这种对
  • 如何将当前用户信息传递到 DDD 中的所有层

    类似的问题以前曾被问过 但不完全相同 除非我错过了 我想通过我的服务 域 域事件 域事件处理程序传递 IUserInfo 类实例 什么是最好的方法 我是不是该 通过注册使用 IoC 注入它 针对 Httpcontext Current se

随机推荐

  • 发生异常: pyspark.sql.utils.AnalysisException '带有流源的查询必须使用 writeStream.start();;\nkafka 执行'

    在代码处 如果不是 df head 1 isEmpty 我有例外 Exception has occurred pyspark sql utils AnalysisException Queries with streaming sourc
  • 元整数平方根的无限递归

    再会 我的一个朋友询问如何将整数平方根函数转换为元函数 这是原始函数 unsigned isqrt unsigned value unsigned sq 1 dlt 3 while sq lt value sq dlt dlt 2 retu
  • 在 Yii 中循环使用事务

    我有一个活动记录数组 并希望以这种方式通过循环更改其中的某些字段 error false foreach items as item item gt is paid self PENDING error error item gt save
  • 更改 SwiftUI 中的 DisclosureGroup 指示符图像

    我正在尝试更改 SwiftUI 中 DisclosureGroup 的指示符图像 理想情况下 我想要一个自定义图像 我尝试用自己的方法来实现这一点ButtonStyle struct TestButtonStyle ButtonStyle
  • 在docker容器中安装Postgis

    我像往常一样使用 postgres 图像通过 docker 创建了一个数据库 docker run d name some postgres e POSTGRES PASSWORD mypassword v HOME postgres da
  • 错误“安全警告:没有向 Rack::Session::Cookie 提供秘密选项”[重复]

    这个问题在这里已经有答案了 可能的重复 没有为 Rack Session Cookie 警告提供秘密选项 https stackoverflow com questions 10374871 no secret option provide
  • HTML5 表单验证真的可以访问吗?

    所以我读了很多文章说 HTML 5 表单验证是可以访问的 东西required属性将阻止表单被提交 字段留空 但是当我在 Chrome 上的 NVDA 和 Android 上的 BackTalk 上测试我的表单时 如果我没有填写输入 它会重
  • Uiautomatorviewer SWT 异常

    由于 StackExchange 建议我不要寻求帮助或澄清以前存在的帖子 https stackoverflow com questions 48128648 uiautomatorviewer is not working throwin
  • 多线程问题

    我正在使用计时器来重置用作警告框的标签 基本上 如果用户做了某件事 更具体地说 出了问题 例如 他使用了程序无法识别的单词 这会尽早捕获出现的问题并将发生的情况返回给他 以便他可以更改输入 重置会在 5 秒后清空标签 以防止他看到类似 请不
  • 使用 mget() 将 data.table 与 rbindlist() 连接时出现意外错误消息

    准备的同时这个答案 https stackoverflow com a 47670107 3817004 我收到错误消息 错误 找不到 spine hlfs 的值 从跑步 setDT giraffe rbindlist mget df na
  • Android 标记自定义信息窗口

    我正在使用谷歌地图V2 我需要展示ListView 风俗ListView带图像 自定义InfoWindow 我尝试过并且只在以下方面取得了成功View 问题是我无法得到listItemClick event googleMap setInf
  • 当函数属于必须解析的类时,如何向 IServiceCollection 注册委托或函数?

    我正在使用 Microsoft Extensions DependencyInjection 中的 IServiceCollection IServiceProvider 我想将委托注入到一个类中 public delegate Valid
  • Java 将表面分割成小方块

    我想知道是否有任何算法可以执行以下操作 给定一个特定的表面 它将其分成相同大小的更小的矩形 像这个示例图一样 灰色区域是表面 红色方块是分区本身 我在想是否有一种优化的方法来做到这一点 一个非常糟糕的方法是在所有像素中进行 for 循环 并
  • 将日期格式更改为 ddth mmm,yyyy

    我正在网络表单上打印一些日期 目前我的日期格式是dd mmm yyyy hh mm 如何将日期格式更改为ddth mmm yyyy for例子2016年5月17日 hh mm 这是我的代码 lastlogin DateTime Parse
  • /usr/bin/ld: 找不到 -lpthreads

    我正在 Fedora 22 上编译 NVIDIA Caffe 工具 但遇到问题需要查找lpthread图书馆 Determining if the pthread create exist failed with the following
  • 如何更改R图表中的默认字体大小

    我正在使用 R 包 cooccurr 无法弄清楚如何更改关联图形中的字体大小 par 方法似乎不起作用 这是包中给出的示例 data finches cooccur finches lt cooccur mat finches type s
  • 模块模式与匿名构造函数的实例

    于是就有了这个所谓的模块模式用于创建具有私有成员的单例 var foo function var foo private return foo function console log foo bar public 还有这个方法是我自己找到
  • 如何使用 click 来解析字符串中的参数?

    假设我有一个包含参数和选项的字符串列表 其中argparse 我可以使用以下方法解析这个列表parse args将函数转化为对象 如下 import argparse extra params sum 7 1 42 parser argpa
  • 如果中断 Git 推送会发生什么?

    我运行了以下命令 git push u origin master 推送 非常大 文件很多 所以上传需要时间 中途我发现我忘记添加几个文件 所以我做了 Ctrl C 在终端 中断 Git 然后做完之后git add 我又承诺了 然后又推了
  • DDD - 如何设计不同限界上下文之间的关联

    我已经设置了一个正在使用 ORM 填充的域项目 该域包含不同的聚合 每个聚合都有自己的根对象 我的问题是应该如何处理跨越聚合边界的属性 这些属性是否应该简单地忽略边界 以便有界上下文 A 中的域对象可以引用上下文 B 中的对象 或者 是否应