Я оцениваю EntityFramework Plus для EF6. NET framework 4.7.2 (не Core).
В ходе предварительного исследования я обнаружил, что по умолчанию ключи кэша основаны на запросе SQL, а не на типах объектов в наборе результатов.
Мой вопрос заключается в том, являются ли объекты в кеш поделился каким-то образом?
Например, если мой первый EF-запрос был:
var employees = myContext.LookupData.Where(x=>x.Id < 100).FromCache()
И мой второй EF-запрос был выполнен, скажем, через 10 минут после того, как первый myContext был Dispose () d , было:
var employees = myContext.LookupData.Where(x=>x.Id < 50).FromCache()
Мы можем видеть, что набор результатов для второго запроса будет содержать записи из первого запроса.
Будет ли Entity Framework Plus проверять, существует ли сущность EF, которая собирается материализоваться в памяти, уже существует в кеше из первого запроса или в некотором кеше общих сущностей?
Если нет, что является ли наилучшей практикой кэширование неизменяемых или редко изменяемых сущностей с EF Plus для совместного использования между запросами?
В настоящее время у меня есть решение использовать теги для создания именованных кэшей, полученных из Type.FullName для каждого типа объекта, используемого в качестве данных поиска, но есть ли что-нибудь лучше?
Заранее спасибо.