sql server 2008 - SqlCacheDependency senza grilletto?
-
23-09-2019 - |
Domanda
Sono così perplesso.
Sto usando questo open-source snippet. Ho una tabella senza alcun trigger in SQL Server, e tuttavia lo SqlCacheDependency sta funzionando benissimo. Ho pensato che avevi bisogno di trigger sul tavolo per farlo funzionare ?!
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));
}
Ogni volta che ho impostato il campo timeupdated a GetDate (), il mio codice rileva che oggetto o è di nuovo null, che dovrebbe, perché dovrebbe essere eliminato dalla cache dopo una volta che è obsoleto, ma il motivo per cui sta funzionando? Ho appena iniziato seguente tutorial su SqlCacheDependency, quindi forse ho perso qualcosa durante la lettura di loro.
EDIT: Stanno usando
SqlCacheDependency dependency = new SqlCacheDependency(command);
e credo che questo non richiede trigger.
Non esitate a condividere se non ti piace questo approccio e preferiscono qualche altro approccio.
Soluzione
No, non hai bisogno di trigger in quanto tali. E 'tutto fatto su Query Notifiche . Hanno un letto attraverso questo articolo, si spiega i 3 modi notifiche delle query può essere configurato usando ADO.NET.
E 'queste notifiche di query, che notificano delle modifiche al gruppo di risultati sottostante.