c# – 显示原始值实体框架7

c# – 显示原始值实体框架7,第1张

概述我有一个审计表,跟踪添加,删除和修改.我在实体框架内跟踪这个而不是使用数据库触发器有多种原因,但实际上是因为我们使用了一个进程账户,我想跟踪用户实际对该记录进行了哪些更改. 我有这个与EF 5&我不记得我可能也曾在EF6中工作过.无论哪种方式,我都在用EF 7试图捕获原始值时遇到最困难的时间. 我注意到,当我在观察时 – 我可以在非公众成员中看到原始价值 – 所以在我的脑海里,我知道它必须存在于某 我有一个审计表,跟踪添加,删除和修改.我在实体框架内跟踪这个而不是使用数据库触发器有多种原因,但实际上是因为我们使用了一个进程账户,我想跟踪用户实际对该记录进行了哪些更改.

我有这个与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所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/langs/1223974.html

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

发表评论

登录后才能评论

评论列表(0条)

保存