Кэширование Entity Framework с шаблоном репозитория - PullRequest
6 голосов
/ 11 апреля 2011

Если я хочу реализовать кэширование, когда я использую шаблон репозитория и Entity Framework, могу ли я просто выполнить простую логику вне Entity Framework для обработки кэширования?

Например,

if(Cache[ProductsKey] != null)
{
    return ConvertToProducts(Cache[ProductsKey]);
}
else
{
    var products = repository.Products;
    Cache[ProductsKey] =  products;
    return products;
}

Кажется, что многие люди слишком усложняют это.Или это будет каким-то образом ограничено?

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

Я предпочитаю, чтобы мой репозиторий был чистым. Я предпочитаю реализовать кэширование на своем сервисном уровне , если необходимо.

Так что я 100% согласен с вашим образцом . Ваш репозиторий возвращает продукты (запустив запрос), и вы можете кэшировать его или нет в других слоях.

P.S .: Я предполагаю, что вы запускаете контекст вашего объекта, когда он необходим (начало сеанса), и удаляете его, когда сеанс заканчивается.

4 голосов
/ 11 апреля 2011

Лучше обналичить весь ObjectContext, который здесь (Репозиторий).

Используйте Session_Start и Session_End для инициализации и утилизации объекта соответственно.

...