2010-02-27 3 views
0

Je suis tellement perplexe. J'utilise cet extrait de code source ouvert. J'ai une table sans déclencheurs dans SQL Server, et pourtant le SQLCacheDependency fonctionne bien. Je pensais que vous aviez besoin de déclencheurs sur la table pour que ça marche ?!sql server 2008 - sqlcachedependency sans trigger?

   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)); 
       } 

Chaque fois que je mets le champ timeupdated à getDate(), mon code détecte que l'objet o est à nouveau nul, qu'il devrait, car il devrait être abandonné du cache après une fois qu'il est obsolète, mais pourquoi est-il fonctionne ? Je viens de commencer à suivre des tutoriels sur SQLCacheDependency, alors j'ai peut-être manqué quelque chose en les lisant.

EDIT: Ils utilisent

SqlCacheDependency dependency = new SqlCacheDependency(command); 

et je suppose que cela ne nécessite pas de déclencheurs.

N'hésitez pas à partager si vous n'aimez pas cette approche et préférez une autre approche.

Répondre

0

Non, vous n'avez pas besoin de déclencheurs en tant que tels. Tout est fait sur Query Notifications. Avoir une lecture à travers cet article, il explique les 3 notifications de requête de façon peuvent être configurés en utilisant ADO.NET.

Ces notifications de requête signalent les modifications apportées au jeu de résultats sous-jacent.

+0

Ah, je viens d'éditer ma réponse! lol – TPR