Как кэшировать наборы результатов / данных в EF 4.1? - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть представление в приложении MVC3, которое вызывает хранимую процедуру (выполнение которой занимает некоторое время), чтобы заполнить сетку представления, и хотел бы как-то кэшировать эти данные?Не знаком с EF-кешированием, но на самом деле я хотел бы как-нибудь запустить запрос, возможно, в фоновом потоке в фоновом режиме при запуске, чтобы при щелчке пользователя по этому конкретному представлению (которое является обычным представлением данных, которое пользователь хочет видеть) получаются результатыбыстрые и кешируются, как показано в сетке

Любая информация будет принята с благодарностью.Спасибо!

1 Ответ

1 голос
/ 24 сентября 2011

Используйте шаблон репозитория для запроса вашего объекта данных.Внутри вашего кеша класса репозитория результат в MemoryCache (определенный тип кеша в .net).Каждый раз, когда вы запрашиваете объект, класс репозитория знает, получить его из кэша или нет, и вызывающей стороне не нужно ничего знать о кэшировании.Я бы сначала использовал код или ИЛИ шаблоны poco, чтобы не хранить багаж от других зависимостей.

Для POCO - вы можете использовать шаблоны EF POCO или модель кода сначала, чтобы получить классы poco безEF багаж.Дайте мне знать, если у вас есть какие-либо конкретные вопросы на этих шагах, и я могу перейти к более подробным.Если вам нужно потратить некоторое время на загрузку этого приложения при запуске, другой поток, безусловно, является способом сделать это, так как любой длительный код Application_start в основном потоке может вызвать взаимоблокировку.Более простой подход для каждого пользователя - поместить объект в сеанс пользователя, но это действительно ваше дело.Кэширование EF как части отсутствует, если инфраструктура EF существует вне времени жизни ObjectContext.Другой метод заключается в том, чтобы обработать это в методе контроллера, как показано здесь: Как кэшировать результаты mvc3 webgrid (так, чтобы щелчок сортировки col не выполнялся?

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