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