Я в процессе обновления приложения с EF1 до EF4.1
Я создал DbContext и набор POCO с помощью шаблонов «Генератор ADO.NET DbContext».
Когда я запрашиваю сгенерированный DbContext, выполнение части базы данных занимает 4 мс (проверено с помощью EF Profiler). И затем контекст занимает около 40 секунд (в словах: FORTY!), Чтобы сделать все, что он делает, прежде чем вернуть результат в приложение.
EF1 обрабатывает тот же запрос менее чем за 2 секунды.
Отключение AutoDetectChanges, LazyLoading и ProxyGeneration выигрывает у меня 2-3 секунды.
Когда я использую метод расширения AsNoTracking (), я могу сократить общее время выполнения примерно до 3 секунд.
Это означает, что виновником является ChangeTracking.
Но ChangeTracking - это то, что мне нужно. Я должен быть в состоянии в конечном итоге сохранить все изменения без необходимости вручную выбирать, какие объекты были изменены.
Есть идеи, как мне решить эту проблему с производительностью?