NHIBERNATE + SYSCACHE2 + SQLCacheDependency - Cache non invalidata nell'applicazione
-
27-10-2019 - |
Domanda
Ho un'applicazione MVC di base che utilizza NHibernate per OR/M e l'accesso ai dati, SyScache2 per la cache di secondo livello in NHibernate e SQLCacheDependency per la logica di invalidazione della cache sottostante. Credo di avere tutto impostato correttamente (posso aggiungere dettagli se richiesto) e posso vedere che gli articoli vengono memorizzati nella cache sul lato dell'applicazione.
Tuttavia, se aggiorno direttamente gli elementi nella tabella del database, nessun aggiornamento viene mai inviato all'applicazione tramite SQLCacheDependency e a SyScache2 in NHibernate. Pertanto, i dati vengono aggiornati nel database ed sono diversi da ciò che è nella cache nell'applicazione (in NHibernate con SyScache2).
Riesco a vedere il valore per la colonna [ChangeD] che correla alla tabella di dominio corretta che aumenta nella tabella [aspnet_sqlcachetablesforchangenotification], quindi sono abbastanza certo che il broker di servizio SQL sia configurato e configurato correttamente. Se profilo il database con SQL Profiler, posso vedere le chiamate di configurazione per code, servizi e SPROCS, nonché le richieste di conversazione iniziale per il monitoraggio.
Non sono davvero sicuro di cosa controllare dopo. Qualcuno ha avuto questo problema prima e qual è stata la risoluzione?
Soluzione
Si scopre che il problema principale era il driver SQL che stavo usando non supportava batch. Una volta che l'ho tornato al pilota NHIBERNATE SQL 2008 predefinito è andato tutto a nuoto.