2011-04-14 32 views
1

在EntityFramework 4.1中,SaveChanges不会减少context.ChangeTracker.Entries()。Count。这是正常的吗?它是否有任何开销?EntityFramework 4.1 ChangeTracker.Entries.Count&SaveChanges

要说清楚,说我必须更新一些客户的邮政编码。所以,我有下面的代码。

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上()计数为零,但在4.1 ChangeTracker.Entries()。计数不。让我知道原因。谢谢。

回答

1

这是绝对正常的。保存更改后,所有实体都保持连接到上下文。只有在保存更改期间被删除的实体才会被分离。修改条目的状态是默认行为从Modified/Added更改为UnchangedObjectStateManager表现完全相同。 DbChangeTracker只是建立在ObjectStateManager之上。

相关问题