EntityFramework 4.1 ChangeTracker.Entries.Count & SaveChanges - PullRequest
1 голос
/ 14 апреля 2011

В EntityFramework 4.1 SaveChanges не уменьшает контекст.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 (), но в 4.1 ChangeTracker.Entries (). Счет не в. Дайте мне знать причину. Спасибо.

1 Ответ

1 голос
/ 14 апреля 2011

Это абсолютно нормально.После сохранения изменений все объекты остаются присоединенными к контексту.Только объекты, которые были удалены во время сохранения изменений, отсоединяются.Состояние измененных записей с поведением по умолчанию изменено с Modified / Added на Unchanged.ObjectStateManager ведет себя абсолютно одинаково.DbChangeTracker это просто сборка поверх ObjectStateManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...