C#学习教程:EF6中如何查看哪些属性/条目被修改,哪些属性/条目未修改EF6我正在使用EF6开发MVC5应用程序。Edit的自动生成的POST方法是:publicActionResultEdit([Bind(Include="Id,Name,Address,Phone,SSNo,D1")]ABCabc){如果(ModelState.IsValid){db.Entry(abc).State=EntityState.Modified;db.SaveChanges();}返回视图(abc);是否有任何程序/方法可以获取修改了哪些条目以及这些条目的原始值是多少。我已经尝试了这个问题中标记为答案的方法,但是尽管已经进行了更改,但它没有得到任何更改,即循环不会迭代。我的代码是:publicActionResultEdit([Bind(Include="Id,Name,Address,Phone,SSNo,D1")]ABCabc){if(ModelState.IsValid){db.ABCs.Attach(abc);varmyObjectState=((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(abc);varmodifiedProperties=myObjectState.GetModifiedProperties();foreach(varpropNameinmodifiedProperties){Console.WriteLine("属性{0}从{1}更改为{2}",propName,myObjectState.OriginalValues[propName],myObjectState.CurrentValues[propName]);}控制台.ReadKey();db.Entry(abc).State=EntityState.Modified;db.SaveChanges();返回Json(abc);}返回视图(abc);}ABC模型包含除了方法参数中提到的许多值之外的其他值但我只传递可以编辑的值我想做的是在我的数据库中维护一对对文档所做的所有更改的日志.我只想在日志中包含更改和修改前的原始值,而不是完整的日志。我怎样才能得到这个?我为你实现了这个扩展方法:>!p.GetGetMethod().IsVirtual)){if(property.GetValue(obj).ToString()!=property.GetValue(modifiedObject).ToString()){yieldreturnnewKeyValuePair(property.Name,property.GetValue(修改后的对象));它既不是最快的也不是最有效的,但它在我的测试中有效。使用:以上是C#学习教程:如何查看哪些属性/条目被修改,哪些属性/条目没有被修改。在EF6中编辑记录并共享所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注—varoriginalEntity=awaitdb.Entities.AsNoTracking().FirstOrDefaultAsync(e=>e.EntityId==modifiedEntity.EntityId);varmodifiedValues=originalEntity.ModifiedValues(modifiedEntity).ToList();,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
