この投稿http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-forに従って、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 と等しいことです。プロパティが変更されたかどうかを確認できるように、元の値を取得するにはどうすればよいですか?
前もって感謝します!