我有以下实体:儿童,人
每个孩子都与母亲和父亲有关系,属于人。 子映射的一部分如下所示:
<many-to-one name="Mother"
column="MotherId"
class="Person"
lazy="false"/> <!-- this lazy setting makes problem -->
<many-to-one name="Father"
column="FatherId"
class="Person"/>
当我实例化并尝试持有具有相同父项的新Child时,具有不同的Child实例,如下所示:
var newChild = new Child{
Mother = m_personRepository.Load(oldChild.Mother.Id),
Father = m_personRepository.Load(oldChild.Father.Id)
};
m_personRepository.SaveOrUpdate(newChild); //this will throw exception
这会抛出带有消息的NHibernate.Exceptions.DataException “初始化[Family.Person#564] - 不能初始化代理 - 没有会话。”
当我从Child的映射中删除“lazy = false”时,一切正常。
该例外的原因在哪里?是否可以使用“lazy = false”加载?
我们正在使用NHibernate版本4.0.0.4000