このコードで DetectChanges が何をするかを理解するのに少し問題があります (EF 4.3 を使用):
using (var context =new BreakAwayContext())
{
var f = context.Destinations.First();
Console.WriteLine(context.Entry(f).State);
f.Name = "something";
Console.WriteLine(context.Entry(f).State);
context.Entry(f).Property(x => x.Name).CurrentValue =
context.Entry(f).Property(x => x.Name).OriginalValue;
context.ChangeTracker.DetectChanges();
Console.WriteLine(context.Entry(f).State);
}
私が見ているのは Unchanged Modified Modified
Name の値を元の値にリセットしたので、すべてのプロパティ値が元の値のスナップショットと一致し、State が Unchanged に戻されたことを DetectChanges が認識しないのはなぜですか? (Entry を呼び出す前に Entry にアクセスしているため、ここで DetectChanges を呼び出すのは冗長かもしれませんが、State が修正されるかどうかを確認したかったのです)。