-->

пятница, 27 мая 2016 г.

Кэширование в Entity Framework

Встроенные возможности

Как многим давно известно из этой замечательной статьи, в средствами Entity Framework кэшируются следующие объекты:
  1. Планы выполнения запросов; 
  2. Метаданные;
  3. Скомпилированные запросы.
Можно ли контролировать этот кэш? Увы, кэширование планов можно отключить при помощи ObjectQuery.EnablePlanCaching, а более тонкие настройки (размер хранилища, expiration policy) - недоступны.
Есть в EF и кэш данных, известный многим: в пределах одного DbContext с доступом через метод Find, что весьма ограничивает возможности его применения. Да и управлять этим кэшем напрямую - по-прежнему невозможно.

Сторонний кэш данных

К счастью в Entity Framework есть возможность использования стороннего кэша для полученных из БД данных (second level cache). И как мы видим из этой статьи, подключить кэш данных не так уж и сложно. А еще проще использовать уже существующий проект, коих немало:

EntityFramework-Plus
NCache
EntityFramework.Cache

Есть, из чего выбрать!