为什么';t NHibernate获取模式。是否在此场景中加入工作?

为什么';t NHibernate获取模式。是否在此场景中加入工作?,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我有两个实体,C和p。 C在一对一关联中映射到P,使用lazy=“无代理”, 像这样:(P的映射:) 但是,对于C实体,使用FetchMode.Join使用左外部联接执行查询,然后立即执行N个查询,按ID获取p!(由NHProf提供) 知道为什么会这样吗 在回答@KLE的问题时,这里是文档的摘录 对于主键关联,请添加 以下是到Employee和 分别为: 确保PERSON表和EMPLOYEE表中相关行的主键相等。 或者,使用带有 唯一约束,从员工到 人,可以表示为: unique=“tru

我有两个实体,C和p。 C在一对一关联中映射到P,使用lazy=“无代理”, 像这样:(P的映射:)

但是,对于C实体,使用FetchMode.Join使用左外部联接执行查询,然后立即执行N个查询,按ID获取p!(由NHProf提供)

知道为什么会这样吗


在回答@KLE的问题时,这里是文档的摘录

对于主键关联,请添加 以下是到Employee和 分别为:


确保PERSON表和EMPLOYEE表中相关行的主键相等。 或者,使用带有 唯一约束,从员工到 人,可以表示为:

unique=“true”/
这种联系是可以建立的 通过添加以下内容 对映射的人:



如果我误解了,请告诉我。谢谢。

我不知道您使用的是哪个版本的NHibernate,但在2.1.0-2.1.2版本中,我遇到了一些关于获取模式和复杂映射的问题。我没有遇到
property ref
(这显然让property walker感到困惑),但我确实遇到了一些联合类的问题


您是否尝试过设置
lazy=“true”/“extra”
,然后定义
FetchMode.Join

谢谢您的编辑。我删除了我的答案,因为它没有带来任何东西。。。
<one-to-one name="c" class="C" property-ref="P" access="field" lazy="no-proxy"/>
<many-to-one name="p" column="PId" class="P" access="field" lazy="no-proxy" not-null="false"/>
criteria.SetFetchMode("p", FetchMode.Join)
<one-to-one name="person" class="Person"/>
<one-to-one name="employee" class="Employee" constrained="true"/>
<many-to-one name="person" class="Person" column="PERSON_ID" > unique="true"/>
<one-to-one name="employee" class="Employee" property-ref="person"/>