c# – EntityFramework核心:获取实体和相关数据中发生的更改

c# – EntityFramework核心:获取实体和相关数据中发生的更改,第1张

概述我想在实体和附加到它的相关数据中发生变化. 我知道如何获取一个实体中已更改的属性名称: dbContext.Entry(entity).Properties.Where(x => x.IsModified).Select(x => x.Metadata.Name).ToList(); 如何对导航属性中的相关数据执行相同 *** 作? 基于此 article (Entity Change Tracking 我想在实体和附加到它的相关数据中发生变化.

我知道如何获取一个实体中已更改的属性名称:

dbContext.Entry(entity).PropertIEs.Where(x => x.IsModifIEd).Select(x => x.Metadata.name).ToList();

如何对导航属性中的相关数据执行相同 *** 作?

解决方法 基于此 article (Entity Change Tracking using DbContext in Entity Framework 6),您应该重写SaveChanges()方法以跟踪实体更改及其相关实体.

public overrIDe int SaveChanges(){    return base.SaveChanges();}

实际上,您应该将上面的代码更改为以下示例:

public overrIDe int SaveChanges(){    var modifIEdEntitIEs = ChangeTracker.EntrIEs()        .Where(p => p.State == EntityState.ModifIEd).ToList();    var Now = DateTime.UtcNow;    foreach (var change in modifIEdEntitIEs)    {        var entityname = change.Entity.GetType().name;        var primaryKey = GetPrimarykeyvalue(change);        foreach(var prop in change.OriginalValues.Propertynames)        {            var originalValue = change.OriginalValues[prop].ToString();            var currentValue = change.CurrentValues[prop].ToString();            if (originalValue != currentValue) //Only create a log if the value changes            {                //Create the Change Log            }        }    }    return base.SaveChanges();}
总结

以上是内存溢出为你收集整理的c# – EntityFramework核心:获取实体和相关数据中发生的更改全部内容,希望文章能够帮你解决c# – EntityFramework核心:获取实体和相关数据中发生的更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存