5

У меня есть веб-приложение ASP.NET MVC 5 и я использую EF 6.1 для доступа к моей БД.
У меня есть довольно сложные запросы LINQ, которые занимают до 10 секунд для компиляции, но затем выполняются за несколько миллисекунд. EF действительно кэширует эти запросы, и во второй раз, когда запрос выполняется, он возвращается в течение нескольких миллисекунд.
Но этот кеш не сохраняется, поэтому при каждом перезагрузке приложения необходимо перекомпилировать запрос, который снова забирает 10 секунд.Кэш запросов Persist Entity Framework

Есть ли способ сохранить этот кеш запросов, чтобы он выжил при перезагрузке приложения?

+0

http://www.fusonic.net/ru/blog/2014/07/09/three-steps-for-fast-entityframework-6.1-first-query-performance/ –

+0

Спасибо за ссылку, но я уже большинство из них и не обрабатывает кеш запросов, а только кэширование модели ... – ChrFin

+1

Кэш запросов - это словарь внутри QueryCacheManager. Я попытался сохранить его с помощью отражения, но поскольку QueryCacheKey и QueryCacheEntry не являются общедоступными и не помечены как Serializable, это невозможно. Сохранение/загрузка кеша плана запроса будет очень полезной функцией, поэтому вы должны создать проблему на http://entityframework.codeplex.com/workitem/list/advanced –

ответ

0

Вы можете использовать скомпилированные запросы: see here или here

Но, как упоминалось here объект запроса не должен выходить за рамки. Вы можете справиться с этим, либо сохраняя его в кеше в сеансе, либо как переменную приложения.

+1

Извините, но это НЕ поможет, так как во время выполнения моего приложения они уже кэшируются EF. Я хочу сохранить это * настойчиво *, чтобы он выжил при перезагрузке приложения ... – ChrFin

+0

Вы можете скомпилировать его во время запуска приложения в фоновом режиме, чтобы он был готов, когда вы его используете. Если это невозможно, вы можете сериализовать скомпилированный объект запроса в файл и восстановить его оттуда. Поэтому только самое первое использование происходит медленно. Однако это можно сделать только с скомпилированными запросами. – Vanice