我有一個小麻煩了解什麼DetectChanges確實在此代碼(使用EF 4.3):爲什麼ObjectContext.DetectChanges沒有將狀態重置爲不變?
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);
}
我看到的是 不變 修改 修改
因爲我重置名稱的價值到原始值,爲什麼DetectChanges沒有意識到所有的屬性值都匹配原始值的快照並將State設置爲Unchanged? (我知道在這裏調用DetectChanges可能是多餘的,因爲我在調用它之前訪問一個條目,但我想看看它是否會修復狀態)。
這聽起來很合理,不能與你的邏輯爭論!感謝你的想法。 – jimslate 2013-05-18 22:18:50