我使用 NHibernate 作为我的 ASP.NET MVC 应用程序的数据访问层。我还使用 Structure Map 作为 IoC 容器。我已将 Structre 映射配置为将会话工厂创建为单例并基于每个请求(InstanceScope.Hybrid)创建会话。我能够很好地进行基本的 CRUD 操作。
现在,我有一个每 30 秒运行一次的后台进程,它使用一些存储库(这些存储库又使用会话)。而且这个后台进程由于某种原因无法获取新数据。也许我错过了一件简单的事情。我尝试使用谷歌搜索,但找不到任何有用的东西。如果有人指出我正确的方向,那真的会对我有所帮助。
编辑:
我不确定我是否启用了二级缓存,我是 NHibernate 的新手,我的 hibernate 配置文件粘贴在下面。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=Map.db;Integrated Security=True</property>
<property name="show_sql">true</property>
<mapping assembly="Infrastructure"/>
</session-factory>
</hibernate-configuration>
我想知道的主要事情是,是否存在已经在使用 NHibernate 的典型 Web 应用程序中使用的设计/设计模式。如果我的数据库设置是从不同的应用程序更新的,那么使用无状态会话会解决问题吗?