我知道如何获取一个实体中已更改的属性名称:
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核心:获取实体和相关数据中发生的更改所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)