gpt4 book ai didi

c# - 使用 Entity Framework 更改跟踪器跟踪集合的更改

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:54 24 4
gpt4 key购买 nike

出于审计/历史目的,我使用 Entity Framework 更改跟踪器来确定,在编写更改之前,发生了什么更改并将更改序列化。我可以通过调用 this.ChangeTracker.Entries() 来获取更改后的实体在我的 DbContext衍生并查看任何标记为 EntityState.Added 的值, EntityState.Deleted , 或 EntityState.Modified .这一切都很好。

我的问题是此方法无法跟踪对 EF 对象集合的更改(例如,ICollection<Person> 对象上的 PersonGroup 属性)。

我确定 EF 上下文必须以某种方式跟踪这一点——毕竟,数据库更新还能如何工作?但是我可以使用吗?

最佳答案

您正在寻找的是关系变化跟踪。您可以在底层 ObjectContextObjectStateManager 中找到它,这里是您如何获取所有添加的关系:

//you need to call DetectChanges
((IObjectContextAdapter)context).ObjectContext.DetectChanges();

var addedRelations = ((IObjectContextAdapter)context).ObjectContext
.ObjectStateManager.GetObjectStateEntries(EntityState.Added)
.Where(e=>e.IsRelationship).ToList();

关于c# - 使用 Entity Framework 更改跟踪器跟踪集合的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com