Подтвердить что ты не робот

Как заставить Entity Framework кэшировать некоторые объекты

Я использую Entity Framework.

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

4b9b3361

Ответ 1

Как сказал Лухман, мой партнер Jarek имеет превосходный поставщик кэширования примеров для Entity Framework. Что он говорит о здесь.

Однако иногда этот подход является излишним, и я подозреваю, что страны-кэшисты - хороший пример, когда усилия не стоят того. Возможно, лучше реализовать какое-то специальное кэширование.

Если вы попытаетесь сделать это, основная проблема, с которой вы столкнетесь, заключается в том, что объект Entity Framework экземпляра может быть привязан только к одному объекту ObjectContext за раз, что означает, что если вы получаете параллельные запросы (например, на веб-сайте), вы будете есть проблемы, вы просто захватываете элементы из кеша и используете их вслепую.

Вам нужен кеш-клонирование, т.е. когда вы извлекаете что-то из кеша, он клонирует их.

Я собрал подсказку, которая иллюстрирует, как это сделать Совет 14 - Как кэшировать справочные данные платформы Entity Framework

Надеюсь, что это поможет

Алекс Джеймс

Корпорация Entity Framework Microsoft.

Ответ 3

Сначала я бы закрепил этот список стран и назначил соответствующую страну каждому получателю. Если вы решили также кэшировать людей, вы должны их зависеть от стран в кешировании и аннулировать их при внесении обновлений в список стран/стран.