gpt4 book ai didi

c# - 使用 EF changetracker 手动获取更改集?

转载 作者:太空狗 更新时间:2023-10-30 00:07:10 25 4
gpt4 key购买 nike

如果我加载一个实体,进行一些更改,然后去保存它,EF 会生成一个更新语句。

这一定意味着在某些时候某些东西(大概是更改跟踪器)正在导航加载的对象层次结构并生成已更改的(实体、属性、值)列表。对于不相关的基础设施,我需要以类似的方式基本上区分对象图。我在想我应该能够重用相同的机制。

所以这就是问题 - 我可以这样做吗?我可以查询对特定实体甚至整个对象图的更改吗?怎么办?

最佳答案

您可以使用上下文的 DbChangeTracker返回 IEnumerable<DbEntityEntry> .然后您可以遍历这些比较 CurrentValues 与 OriginalValues。原始值是上次查询数据库的值。

var modifiedEntries = ChangeTracker.Entries().Where(e => e.State == EntityState.Modified);
foreach (DbEntityEntry entity in modifiedEntries)
{
foreach (var propName in entity.CurrentValues.PropertyNames)
{
var current = entity.CurrentValues[propName];
var original = entity.OriginalValues[propName];
}
}

关于c# - 使用 EF changetracker 手动获取更改集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30227076/

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