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