Pregunta

Tengo una aplicación MVC básica que está utilizando NHibernate para OR/M y acceso de datos, SYSCACHE2 para el caché de segundo nivel en NHibernate y SQLCachedependency para la lógica de invalidación de caché subyacente. Creo que tengo todo configurado correctamente (puedo agregar detalles si se solicita) y puedo ver que los elementos se almacenan en caché en el lado de la aplicación.

Sin embargo, si actualizo los elementos en la tabla de la base de datos directamente, nunca se envía una actualización a la aplicación a través de SQLCachedependency y al SYSCACHE2 en NHibernate. Por lo tanto, los datos se están actualizando en la base de datos y son diferentes de lo que está en el caché en la aplicación (en nHibernate con syscache2).

Puedo ver el valor de la columna [ChangeID] que se correlaciona con la incrementación de la tabla de dominio correcta en la tabla [Aspnet_SQLCachetableForChangenotification], por lo que estoy bastante seguro de que el corredor de servicio SQL está configurado y configurado correctamente. Si perfilo la base de datos con SQL Profiler, puedo ver las llamadas de configuración para colas, servicios y SPROC, así como las llamadas de conversación para el monitoreo.

No estoy realmente seguro de qué verificar a continuación. ¿Alguien ha tenido este problema antes y cuál fue la resolución?

¿Fue útil?

Solución

Resulta que el problema principal era que el controlador SQL que estaba usando no admitía lotes. Una vez que lo cambié al controlador NHibernate SQL 2008 predeterminado, todo salió a la natación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top