我很难理解 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 的值重置为其原始值,为什么 DetectChanges 没有意识到所有属性值都与原始值的快照匹配并将 State 设置回 Unchanged ?(我意识到在这里调用 DetectChanges 可能是多余的,因为我在调用之前访问了一个条目,但我想看看它是否会修复状态)。