我正在尝试使用Entity Framework core 2.0实施审核表。但是,所有字段都将被保存,而不仅仅是已编辑的字段。我以为我可以做一个简单的if语句。如果旧值不等于新值,则它是更改后的值。
但是,这不适用于布尔值。两个真正的布尔值不相等。
这是我非常简单的代码:
if (property.OriginalValue != property.CurrentValue)
{
auditEntry.OldValues[propertyName] = property.OriginalValue;
auditEntry.NewValues[propertyName] = property.CurrentValue;
}
希望,您可以在图像中看到OldValues
和NewValues
都是正确的,但如果不正确,它将落入if
语句中。我希望有一个if
语句,如果可能的话,该语句比较字符串,整数,布尔值等。
答案 0 :(得分:0)
与property.OriginalValue和property.CurrentValue是2个对象这一事实有关。由于2不引用相同的对象,因此它们永远不相等。尝试使用.ToString()或类似的东西进行比较:property.IsModified
答案 1 :(得分:0)
使用此行修复它:
if (((property.OriginalValue != null) ? property.OriginalValue.ToString() : "" ) != ((property.CurrentValue != null) ? property.CurrentValue.ToString() : ""))