Как создать зависимость кэша SQL для конкретной строки?

StackOverflow https://stackoverflow.com/questions/940418

Вопрос

Я хочу использовать кэширование данных в своем приложении .net C#.До сих пор я добавил кэширование данных и добавил зависимости кэша sql для конкретных таблиц.Но этого недостаточно.Эти таблицы будут обновляться слишком часто, но не будут актуальны для многих кэшированных объектов.Это сделает кэширование данных практически бесполезным, поскольку оно будет часто сбрасываться.Я хочу реализовать зависимость кэша sql от определенных строк для каждого объекта.Как мне это сделать?

Это было полезно?

Решение

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

Технически вы можете подписаться на определенные уведомления, отправив запрос, специфичный для этой строки, т.е.с жестко закодированным предложением WHERE.Вам придется изменить свой код, чтобы получать и кэшировать только необходимые данные построчно, а не извлекать целые таблицы и кэшировать их в памяти.Черт возьми, вам все равно придется это сделать, если вас хотя бы беспокоит размер этих таблиц.Кэширование целых таблиц следует выполнять только для каталожных и справочных данных, которые изменяются нечасто или вообще не изменяются.

Вы также можете выбрать извлечение и кэширование разделов данных, т.е.отдельные диапазоны ключей (скажем, между «A» и «D», «E» и «H» и т. д. и подписаться на уведомления для этого конкретного раздела данных.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top