我看过很多帖子Re:上面的问题(无法找到persister)。但是我们遇到的问题是这个错误在我们的Web应用程序(ASP.Net MVC)中随机出现。此外,当我们重新启动应用程序池时,问题就会消失。
大多数情况下,缓存的实体会发生错误。请参阅下面的映射。
<class name="Privilege" table="PRIVILEGE" lazy="false">
<cache usage="nonstrict-read-write"/>
<id name="Id" />
<property name="Description" column="DESCRIPTION" not-null="true" />
<set name="RoleCollection" table="PRIVILEGE_ROLE">
<cache usage="nonstrict-read-write"/>
<key column="PRIVILEGE_ID" foreign-key="PRIVILEGE_ROLE_FK1" />
<many-to-many class="Role" column="ROLE_ID" foreign-key="PRIVILEGE_ROLE_FK2" />
</set>
<class name="Role" table="ROLE" lazy="false" >
<cache usage="nonstrict-read-write"/>
<id name="Id" />
<property name="Description" column="DESCRIPTION" not-null="true" />
<set name="PrincipalCollection" table="ROLE_PRINCIPAL">
<cache usage="nonstrict-read-write"/>
<key column="ROLE_ID" foreign-key="ROLE_PRINCIPAL_FK1" />
<many-to-many class="Principal" column="PRINCIPAL_ID" foreign-key="ROLE_PRINCIPAL_FK2" />
</set>
这可能与NHb会话损坏有关吗?如果有人能够至少指出我们对此进行故障排除的方向,我们非常感谢,因为它无法始终如一地重现问题。 (我们使用NHb 3.1.0.4000)
答案 0 :(得分:1)
很抱歉提供更新时间很晚。
我已经找到了原因,它恰好是Nhibernate Session Factory的初始化方式。
解决方案
这种方法不仅解决了这个问题,从性能的角度来看,我认为这是一个更好的选择。急切地进行会话工厂初始化的昂贵操作而不是对特定用户请求施加更多权重更能反映出手头的问题。
我们正在prod运行这个修改版本一个月,没有任何问题。