gpt4 book ai didi

entity-framework - 为什么 DbEntityEntry 的原始值与新值匹配?

转载 作者:行者123 更新时间:2023-12-04 08:34:32 24 4
gpt4 key购买 nike

我正在尝试根据这篇文章 http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for-audit-logging/ 在我的带有 EF 应用程序的 MVC 4 中实现审计.

我在修改实体时无法找到更改的属性。我有一个继承自 DbContext 并覆盖 SaveChanges 方法的类。在这个新的 SaveChanges 方法中,我有以下代码来查找更改的属性,其中实体来自 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.
}
}

这个问题是 originalValue 始终等于 newValue,即使尚未将任何内容保存到数据库中。如何获取原始值以便检查属性是否已更改?

提前致谢!

最佳答案

你可以这样做:

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";
}

关于entity-framework - 为什么 DbEntityEntry 的原始值与新值匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com