Есть ли простой способ использовать кэширование ASP.NET с Entity Framework 4.1 Code First? - PullRequest
0 голосов
/ 11 мая 2011

Сначала мы используем код EF с кешем App Fabric в Windows Azure (хотя, я думаю, вопрос действительно более общий, поскольку мы используем его в качестве поставщика кэширования ASP.net). Есть ли простой способ включить кэширование объектов DBset? Наша база данных небольшая и не обновляется очень часто, поэтому в идеале мы могли бы кэшировать всю базу данных в памяти и использовать некоторое истечение времени ttl для обновления наборов объектов. Любой совет от кого-то с опытом кеширования с использованием кода EF был бы хорош.

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Не делай этого . Если вы хотите кэшировать данные, извлеките их в отдельные списки и кэшируйте их отдельно. Кэширование DbSet означает кэширование DbContext, которое я бы продвинул в anity-pattern в Entity Framework. Проблемы с картой личности и единицей работы описаны в связанном ответе. Другая проблема заключается в том, что нет реального обновления. Если вы действительно хотите обновить данные, вы должны удалить контекст и создать новый. Контекст также не является поточно-ориентированным, поэтому его совместное использование с несколькими запросами может привести к неожиданным результатам.

0 голосов
/ 11 июля 2011

Возможно, вы могли бы использовать это решение, но я никогда не использовал его с Azure:

EF Caching Provider

...