EntityFramework 4.1 ChangeTracker.Entries.Count&保存更改

时间:2011-04-14 16:36:27

标签: entity-framework entity-framework-4.1

在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不是。让我知道原因。感谢。

1 个答案:

答案 0 :(得分:1)

绝对正常。保存更改后,所有实体仍保持附加到上下文。仅保存在保存更改期间删除的实体。已修改条目的状态默认行为已从Modified / Added更改为UnchangedObjectStateManager表现完全相同。 DbChangeTracker只是建立在ObjectStateManager之上。