NHibernate加载lazy = false

时间:2015-02-25 14:29:57

标签: c# nhibernate lazy-loading

我有以下实体:儿童,人

每个孩子都与母亲和父亲有关系,属于人。 子映射的一部分如下所示:

<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

0 个答案:

没有答案