Entity Framework — начальное сохранение выполняется медленно

Мы реализуем систему с использованием EF4 и WPF. Мы заметили проблему с начальным сохранением данных: при запуске начального SaveChanges возникает задержка от 4 до 6 секунд при запуске команды context.SaveChanges(). Каждое последующее SaveChanges выполняется очень быстро, без заметной задержки. Это не главная проблема, но, тем не менее, неприятность.

Кто-нибудь сталкивался с этой проблемой и знает, как ее обойти?

Спасибо


person Gatmando    schedule 13.07.2010    source источник
comment
Я испытал это с EF3, но не знаю, как это обойти. Я согласен, это действительно раздражает.   -  person echo    schedule 13.07.2010
comment
Поставить SQL Profiler и проследить? Посмотрите, что происходит, когда вы сохраняете   -  person ram    schedule 13.07.2010
comment
Согласен с @перезагрузчиком. Профилируйте свое приложение с помощью SQL Profiler и профилировщика кода. Выясните, что вас тормозит.   -  person Craig Stuntz    schedule 14.07.2010
comment
Мы сделали это, но генерируемый и выполняемый sql точно такой же, как для первоначального сохранения, так и для последующих сохранений.   -  person Gatmando    schedule 14.07.2010


Ответы (1)


Проблема решена: ответ состоял в том, чтобы предварительно сгенерировать представления модели. Причина этого и способ реализации решения находятся здесь: http://msdn.microsoft.com/en-us/library/bb896240.aspx.

Короче говоря, каждый раз, когда создается новый контекст, Entity Framework создает набор представлений, используемых для доступа к базе данных. Это создание представления является дорогостоящей операцией и объясняет значительную начальную задержку. Благодаря предварительной компиляции этих представлений этой начальной задержки можно избежать.

person Gatmando    schedule 14.07.2010