Nhibernate异常:base {NHibernate.HibernateException} = {“非法访问加载集合”}

时间:2015-06-04 14:41:47

标签: c# asp.net asp.net-mvc nhibernate nhibernate-mapping

我正在处理一个NHibernate异常:“base {NHibernate.HibernateException} = {”非法访问loading collection“}”

表PatRef是父表。 表PatCon是Sub表。 当我在debuging模式下从PatRef检索数据到PatCons时,错误消息屏幕截图如下。

enter image description here

Nhibernate数据映射截图如下。

父表PatRef:

enter image description here

enter image description here

子表PatCon: enter image description here

enter image description here

PatRefManagerProp.GetById的工具 enter image description here

2 个答案:

答案 0 :(得分:1)

任何时候我都看到这是因为当用于检索对象的ISession被处置或不再存在时,尝试访问延迟加载的集合。

您可以使用ISession.Lock(entity, LockMode.None)将实体附加到其他会话来解决此问题。

只是注意警告 - 您无法将临时实体附加到会话。

(顺便提一下原始问题的细节.1 +)

答案 1 :(得分:1)

由以下原因引起的问题:“Project类中的布尔字段可能会在数据库中标记为varchar字段”。

我有一个数据库列“ON_DIALYSIS”“VARCHAR2(1)”,它在映射类PatCon中映射为bool

public virtual bool OnDialysis         {             得到{return _onDialysis; }             设置{_onDialysis = value; }         }

修复映射后(将bool更改为字符串),一切都变得美丽: - )

公共虚拟字符串OnDialysis         {             得到{return _onDialysis; }             设置{_onDialysis = value; }         }