实体框架中的聚合根支持

2024-04-28

我们如何告诉实体框架骨料 http://domaindrivendesign.org/node/88?

  1. 保存聚合时,保存聚合内的实体
  2. 删除聚合时,删除聚合内的实体
  3. 当两个不同的用户尝试修改同一聚合中的两个不同实体时引发并发错误
  4. 加载聚合时,即使在访问聚合中的所有实体之前存在一些时间延迟,也要提供聚合的一致时间点视图

(实体框架4.3.1代码优先)


EF 提供的功能允许您定义聚合并使用它们:

  1. 这是最痛苦的部分。 EF 使用实体图。如果您有一个像 Invoice 这样的实体,并且该实体具有相关 InvoiceLine 实体的集合,您可以像聚合一样处理它。如果您处于附加场景中,一切都会按预期工作,但在分离场景中(聚合不是由 EF 加载的,或者是由不同的上下文实例加载的),您必须将聚合附加到上下文实例,并准确地告诉它您更改了什么 = 设置状态对于对象图中的每个实体和独立关联。
  2. 这是通过级联删除来处理的 - 如果加载了相关实体,EF 将删除它们,但如果没有,则必须在数据库中的关系上配置级联删除。
  3. 这是通过数据库中的并发标记来处理的 - 最常见的是时间戳或行版本列。
  4. 您必须使用急切加载并在开始时一起加载所有数据(=一致的观点),或者您将使用延迟加载,在这种情况下,您将不会有一致的观点,因为延迟加载将加载关系的当前状态,但它不会更新您已加载的聚合的其他部分(如果您尝试使用 EF 实现此类刷新,我认为这是性能杀手)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架中的聚合根支持 的相关文章

随机推荐