我有一个基本的MVC应用程序,它使用NHibernate进行OR / M和数据访问,SysCache2用于NHibernate中的二级缓存,SqlCacheDependency用于底层缓存失效逻辑。我相信我已经正确设置了所有内容(如果需要,我可以添加详细信息),我可以看到项目正在缓存在应用程序端。
但是,如果我直接更新数据库表中的项目,则不会通过SqlCacheDependency和NHibernate中的SysCache2将更新发送回应用程序。因此,数据正在数据库中更新,并且与应用程序中的缓存中的数据不同(在NHibernate中使用SysCache2)。
我可以看到[changeId]列的值与[AspNet_SqlCacheTablesForChangeNotification]表中递增的正确域表相关联,因此我非常确定SQL Service Broker是否已正确设置和配置。如果我使用SQL事件探查器分析数据库,我可以看到队列,服务和sprocs的设置调用以及监视的BEGIN CONVERSATION调用。
不确定接下来要检查什么。以前有没有人遇到过这个问题,决议是什么?
答案 0 :(得分:1)
原来问题是我使用的sql驱动程序不支持批处理。一旦我将它切换回默认的nhibernate sql 2008驱动程序,一切都进行了。