предварительно скомпилированное представление, не влияющее на производительность - PullRequest
1 голос
/ 25 ноября 2011

РЕДАКТИРОВАТЬ:

Этот вопрос не о скомпилированных запросах, а о создании представления базы данных EF во время компиляции.

Из блога команды ADO.NET: Исследование производительности ADO.NET Entity Framework - Часть 1 :

Представление 56% - Большая часть создания абстрактного представления базы данных обеспечивает фактическоепросматривать запросы и обновления на родном языке магазина.На этом этапе создаются представления магазина.Хорошей новостью является то, что есть способ сделать генерацию представлений частью процесса сборки, чтобы этого шага можно было избежать во время выполнения.


Первый вызов базы данных в моем веб-приложении занимает около2,5 секунды вместо ~ 30 мс для последующих идентичных вызовов.

Я сгенерировал исходный файл предварительно скомпилированного представления, используя шаблон T4, из блога команды ADO.NET *1019*, но это не оказало заметного различия.

Запуск шаблона T4 занимает около 2,5 секунд, и сгенерированный код компилируется.

Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2011

Исправлено!

Сгенерированное представление, полученное из EntityViewContainer, должно находиться в сборке, содержащей объекты самообследования STO, а не в той, что содержит модель edmx.

1 голос
/ 25 ноября 2011

При первом вызове приложения после сборки веб-сервер выгружает приложение, и первый вызов снова «запускает» приложение и все, что с этим связано.Это не имеет ничего общего с предварительно скомпилированными представлениями.Поэтому первый вызов всегда будет занимать больше времени при загрузке приложения.

Кстати, то же самое произойдет и на вашем производственном сервере.Свободный рабочий пул вполне может выгрузить ваше приложение, и вызов next снова загрузит приложение, что займет значительно больше времени, чем обычные запросы.

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