私はとても困惑しています。
このオープンソースのスニペットを使用しています。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);
これにはトリガーは必要ないと思います。
このアプローチが嫌いで、他のアプローチを好む場合は、お気軽に共有してください。