我有这个与EF 5&我不记得我可能也曾在EF6中工作过.无论哪种方式,我都在用EF 7试图捕获原始值时遇到最困难的时间.
我注意到,当我在观察时 – 我可以在非公众成员中看到原始价值 – 所以在我的脑海里,我知道它必须存在于某个地方.
最终这适用于EF早期版本:
EntityEntry dbEntry; //this is actually passed in a different area just showing as an example.foreach (string propertyname in dbEntry.OriginalValues.Propertynames){ // For updates,we only want to capture the columns that actually changed if (!object.Equals(dbEntry.OriginalValues.GetValue<object>(propertyname),dbEntry.CurrentValues.GetValue<object>(propertyname))) { result.Add(new tableChange() { AuditLogID = GuID.NewGuID(),UserID = userID,EventDateUTC = changeTime,EventType = "M",// ModifIEd tablename = tablename,RecordID = dbEntry.OriginalValues.GetValue<object>(keyname).ToString(),Columnname = propertyname,OriginalValue = dbEntry.OriginalValues.GetValue<object>(propertyname) == null ? null : dbEntry.OriginalValues.GetValue<object>(propertyname).ToString(),NewValue = dbEntry.CurrentValues.GetValue<object>(propertyname) == null ? null : dbEntry.CurrentValues.GetValue<object>(propertyname).ToString() } ); } }
我得到的错误是EntityEntry不包含OriginalValues的定义.我要拔掉头发……如何从EF 7的修改对象中获取原始值?
解决方法// using System.Reflection;foreach (var property in dbEntry.Entity.GetType().GetTypeInfo().DeclaredPropertIEs){ var originalValue = dbEntry.Property(property.name).OriginalValue; var currentValue = dbEntry.Property(property.name).CurrentValue; Console.Writeline($"{property.name}: Original: {originalValue},Current: {currentValue}");}总结
以上是内存溢出为你收集整理的c# – 显示原始值实体框架7全部内容,希望文章能够帮你解决c# – 显示原始值实体框架7所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)