1

我有一个基本的 MVC 应用程序,它使用 NHibernate 进行 OR/M 和数据访问,SysCache2 用于 NHibernate 中的二级缓存,SqlCacheDependency 用于底层缓存失效逻辑。我相信我已经正确设置了所有内容(如果需要,我可以添加详细信息)并且我可以看到项目正在缓存在应用程序端。

但是,如果我直接更新数据库表中的项目,则不会通过 SqlCacheDependency 和 NHibernate 中的 SysCache2 将更新发送回应用程序。因此,数据库中的数据正在更新,并且与应用程序缓存中的数据不同(在 NHibernate 和 SysCache2 中)。

我可以在 [AspNet_SqlCacheTablesForChangeNotification] 表中看到与正确域表递增相关的 [changeId] 列的值,因此我相当确定 SQL 服务代理已正确设置和配置。如果我使用 SQL Profiler 分析数据库,我可以看到队列、服务和存储过程的设置调用以及用于监视的 BEGIN CONVERSATION 调用。

不太确定接下来要检查什么。以前有没有人遇到过这个问题,解决方案是什么?

4

1 回答 1

1

原来主要问题是我使用的 sql 驱动程序不支持批处理。一旦我将它切换回默认的 nhibernate sql 2008 驱动程序,一切都会顺利进行。

于 2011-10-04T01:51:49.760 回答