То, что я хочу, концептуально довольно просто, но я не могу понять, как было бы лучше реализовать такую вещь.
В моем веб-приложении у меня есть сервисы, которые обращаются к репозиториям, которые обращаются к EF, который взаимодействует сбаза данных SQL Server.Все они создаются один раз за веб-запрос.
Я хочу иметь дополнительный слой между репозиториями и EF (или сервисами и репозиториями?), Который статически отслеживает объекты, которые извлекаются и передаются вбаза данных.
Цель, предполагая, что доступ к БД осуществляется только через приложение, заключается в том, чтобы мы знали о том факте, что если какой-либо репозиторий не получит доступ к EF и не внесет изменение, объект будет установленна самом деле не изменилось.
Примером может быть:
Репозиторий вызывает метод GetAllCarrots();
GetAllCarrots()
выполняет запрос на SQL Server, получая List<Carrot>
, если между ними ничего не происходит, я бы хотел, чтобы этот запрос фактически никогда не выполнялся на SQL Server каждый раз (независимо от того, находится ли он на другом веб-запросе, я хочубыть в состоянии справиться с этим сценарием)
Теперь, если вызов BuyCarrot()
добавляет Carrot
к таблице, то я хочу, чтобы это сделало недействительным статический кеш для Carrot
s, чтоh заставит GetAllCarrots();
потребовать повторного запроса к базе данных.
Какие есть хорошие ресурсы для кэширования базы данных?