在EntityFramework 4.1中,SaveChanges没有减少context.ChangeTracker.Entries()。Count。这是正常的吗?它有任何开销吗?
要明确的是,我必须为某些客户更新邮政编码。所以,我有如下代码。
using (CustomerContext ctx = new CustomerContext())
{
var customers = ctx.Customers.Where(a => a.ZipCode = 12345);
foreach (var customer in customers)
{
customer.ZipCode = 54321;
.........
ctx.SaveChanges(); //ctx.ChangeTracker.Entries().Count is NOT set to zero
}
}
我认为在4.0中,ObjectStateManager将计数重置为SaveChanges()上的Zero,但是在4.1 ChangeTracker.Entries()中.Count不是。让我知道原因。感谢。
答案 0 :(得分:1)
绝对正常。保存更改后,所有实体仍保持附加到上下文。仅保存在保存更改期间删除的实体。已修改条目的状态默认行为已从Modified
/ Added
更改为Unchanged
。 ObjectStateManager
表现完全相同。 DbChangeTracker
只是建立在ObjectStateManager
之上。