Кэшировать данные из БД с помощью EF 4 - PullRequest
0 голосов
/ 07 мая 2011

У меня есть приложение, которое должно хранить данные из БД в памяти.Есть 5-6 таблиц с очень небольшим количеством строк, и таблицы обновляются очень редко, и, поскольку приложению нужны эти данные очень часто, я хотел бы избегать все время запрашивать БД для каждого действия.Я использую Entity Framework 4 (linq для лиц), и он отправляет запрос каждый раз, когда запрашивает.Я знаю, что можно избежать этого, используя ToList или около того ... но мне нужна информация из этих 6 таблиц, и запросы применяют соединения.

Что было бы лучшим решением.

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Цель запроса - выполнить.Вы можете проверить EF Caching Wrapper , если это решит проблему, но я так не думаю.Поставщик кэширования кэширует фактический запрос, поэтому его достаточно изменить, где условие, и это рассматривается как другой запрос.

Это должно быть сделано путем загрузки данных в пользовательские структуры данных (списки) и использования Linq-to-objects наим.

0 голосов
/ 25 мая 2013

Если вы объединяете эти данные с другими данными, которые не подходят для кэширования, я бы посоветовал взглянуть на функции вашего ядра СУБД. Самые продвинутые базы данных SQL уже разместят эти таблицы в оперативной памяти. Вы уже будете подвергаться сетевым задержкам при выполнении запроса для некэшируемых данных. И база данных уже будет иметь индекс в ОЗУ. Если вы не говорите о больших строках, таких как изображение или подобное. Вы бы просто переместили небольшое количество обработки из одного места в другое. Кроме того, чтобы быть такой же эффективной, как база данных SQL, вам нужно не только найти способ кэширования, но также кэшировать индекс и писать код для его использования и обслуживания.

Тем не менее, в некоторых случаях это было бы очень полезно.

...