实体框架 – 实体框架中的聚合根支持

我们如何告诉实体框架约 Aggregates

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

(实体框架4.3.1代码优先)

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

这是最痛苦的部分. EF与实体图表一起工作.如果您有一个像发票这样的实体,并且该实体拥有相关InvoiceLine实体的集合,您可以像聚合一样处理它.如果您在附件的情况下,所有工作都按预期方式工作,但在分离的情况下(聚合不由EF加载,或由不同的上下文实例加载),则必须将聚合附加到上下文实例,并准确地告诉您更改了什么=设置状态对于每个实体和对象图中的独立关联.>这是由级联删除处理的 – 如果您加载了相关实体,EF将会删除它们,但如果不这样做,则必须在数据库中的关系上配置级联删除.>这是由数据库中的并发令牌来处理的 – 最常见的是时间戳记或rowversion列.>您必须使用热切加载并将所有数据加载在一起(=一致的观点),否则将使用延迟加载,在这种情况下,您将不会具有一致的观点,因为延迟加载将加载当前的关系状态,它不会更新您已经加载的聚合的其他部分(如果您尝试使用EF实现这样的刷新,我认为这是性能杀手).

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...