Вопрос

Я так озадачен.

Я использую этот фрагмент с открытым исходным кодом.У меня есть таблица без каких-либо триггеров в SQL Server, и все же SqlCacheDependency работает нормально.Я думал, вам нужны триггеры на столе, чтобы это сработало ?!

                DateTime localFileTimeStamp = DateTime.Now; 
                DateTime fileTimeStampInDB;
                string cacheKey = string.Format("ImageId_{0}", 1);
                object o = Utils.Cache.Get(cacheKey);
                if (null == o)
                {
                    // get timestamp from DB
                    SqlCacheDependency dep;
                    fileTimeStampInDB = DataLayer.GetTimeStamp(1, out dep);
                    Utils.Cache.Insert(cacheKey, fileTimeStampInDB, dep, Cache.NoAbsoluteExpiration,
                        Cache.NoSlidingExpiration);
                    //, CacheItemPriority.Normal);
                    //new CacheItemRemovedCallback(WebUtils.CacheItemRemovedCallback));
                }

Каждый раз, когда я устанавливаю для поля timeupdated значение getdate(), мой код обнаруживает, что объект o снова имеет значение null, что и должно быть, потому что его следует удалить из кэша после того, как он устареет, но почему он работает?Я только начал следить за руководствами по SqlCacheDependency, так что, возможно, я что-то пропустил при их чтении.

Редактировать:Они используют

SqlCacheDependency dependency = new SqlCacheDependency(command);

и я предполагаю, что для этого не требуются триггеры.

Пожалуйста, не стесняйтесь поделиться, если вам не нравится этот подход и вы предпочитаете какой-то другой.

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

Решение

Нет, вам не нужны триггеры как таковые.Все это делается на Уведомления о запросах.Прочтите эту статью, в ней объясняются 3 способа настройки уведомлений о запросах с помощью ADO.NET.

Именно эти уведомления о запросах уведомляют об изменениях в базовом результирующем наборе.

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