bur*_*ows 3 entity-framework asp.net-mvc-4
我试图在我的MVC 4中使用EF应用程序实现审计,如本文http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for -audit-logging /.
在修改实体时,我无法找到更改的属性.我有一个继承自DbContext的类并重写了SaveChanges方法.在这个新的SaveChanges方法中,我有以下代码来查找已更改的属性,其中entity来自ChangeTracker.Entities().
foreach (var propertyName in entity.OriginalValues.PropertyNames)
{
var originalValue = entity.OriginalValues.GetValue<object>(propertyName);
var newValue = entity.CurrentValues.GetValue<object>(propertyName);
if (!object.Equals(originalValue, newValue))
{
// Insert an auditing record.
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题是originalValue总是等于newValue,即使还没有保存到数据库中.如何获取原始值以便检查属性是否已更改?
提前致谢!
小智 5
你可以这样做:
foreach (var propertyName in entity.OriginalValues.PropertyNames)
{
String originalValue = "";
String newValue = "";
originalValue = entity.GetDatabaseValues().GetValue<object>(propertyName).ToString();
newValue = entity.CurrentValues.GetValue<object>(propertyName).ToString();
changes += propertyName.ToString() + " : " + originalValue + " --> " + newValue + "\n";
}
Run Code Online (Sandbox Code Playgroud)