Nhibernate 异常:基础 {NHibernate.HibernateException} = {"illegal access to loading collection"}
Nhibernate exception: base {NHibernate.HibernateException} = {"illegal access to loading collection"}
我正在处理 NHibernate 异常:"base {NHibernate.HibernateException} = {"非法访问加载集合"}"
Table PatRef 是 Parent table。
Table PatCon 是 Sub table。
当我在调试模式下从 PatRef 检索数据到 PatCons 时,错误消息屏幕截图如下。
Nhibernate 数据映射截图如下。
Parent Table PatRef:
子 Table PatCon:
PatRefManagerProp.GetById的工具
每次我看到它都是由于在用于检索对象的 ISession
已被处置或不再存在时尝试访问延迟加载的集合引起的。
您可以通过使用 ISession.Lock(entity, LockMode.None)
.
将实体附加到另一个会话来解决此问题
请注意警告 - 您不能将临时实体附加到会话。
(顺便说一下,原始问题中的详细信息。+1)
由以下原因引起的问题:"a boolean field in your Project class may be marked as a varchar field in the database"。
我有一个数据库列 "ON_DIALYSIS" "VARCHAR2(1)",它在映射 class PatCon
中被映射为布尔值
public virtual bool OnDialysis
{
得到{ return _onDialysis; }
设置 { _onDialysis = 值; }
}
修改映射后(将布尔值改为字符串),一切都变漂亮了:-)
public 虚拟字符串 OnDialysis
{
得到{ return _onDialysis; }
设置 { _onDialysis = 值; }
}
我正在处理 NHibernate 异常:"base {NHibernate.HibernateException} = {"非法访问加载集合"}"
Table PatRef 是 Parent table。 Table PatCon 是 Sub table。 当我在调试模式下从 PatRef 检索数据到 PatCons 时,错误消息屏幕截图如下。
Nhibernate 数据映射截图如下。
Parent Table PatRef:
子 Table PatCon:
PatRefManagerProp.GetById的工具
每次我看到它都是由于在用于检索对象的 ISession
已被处置或不再存在时尝试访问延迟加载的集合引起的。
您可以通过使用 ISession.Lock(entity, LockMode.None)
.
请注意警告 - 您不能将临时实体附加到会话。
(顺便说一下,原始问题中的详细信息。+1)
由以下原因引起的问题:"a boolean field in your Project class may be marked as a varchar field in the database"。
我有一个数据库列 "ON_DIALYSIS" "VARCHAR2(1)",它在映射 class PatCon
中被映射为布尔值public virtual bool OnDialysis { 得到{ return _onDialysis; } 设置 { _onDialysis = 值; } }
修改映射后(将布尔值改为字符串),一切都变漂亮了:-)
public 虚拟字符串 OnDialysis { 得到{ return _onDialysis; } 设置 { _onDialysis = 值; } }