我很困惑。
我正在使用这个开源代码片段。我在 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 再次为空,这是应该的,因为它应该在过期后从缓存中删除,但为什么它会工作?我刚刚开始学习有关 SQLCacheDependency 的教程,所以也许我在阅读它们时遗漏了一些东西。
编辑:他们正在使用
SqlCacheDependency dependency = new SqlCacheDependency(command);
我想这不需要触发器。
如果您不喜欢这种方法并喜欢其他方法,请随时分享。