给定团队 -> 运动员关系并查询所有运动员。什么
我是不是误会了fetch="Join"
?此映射是否会导致
要通过加入加载的团队?当迭代运动员时,它
仍然懒惰地加载团队。
public class AthleteMap : ClassMapping<Athlete>
{
public AthleteMap()
{
ManyToOne(a => a.Team, o =>
{
o.Fetch(FetchKind.Join);
o.Lazy(LazyRelation.NoLazy);
}
);
}
}
生成此 HBM:
<class name="Athlete" table="Athletes">
<id name="Id" type="Int32" />
<property name="FirstName" />
<property name="LastName" />
<many-to-one name="Team" fetch="join" lazy="false" />
<property name="Created" />
</class>
迭代:
var session = factory.OpenSession();
foreach (var athlete in session.Query<Athlete>())
Console.WriteLine("{0} {1}", athlete.FirstName, athlete.Team.Name);
NHibernate Linq 查询不使用映射的获取策略。您必须像这样在 linq 查询中 Fetch() 。
var session = factory.OpenSession();
foreach (var athlete in session.Query<Athlete>().Fetch(x => x.Team))
Console.WriteLine("{0} {1}", athlete.FirstName, athlete.Team.Name);
映射文档中定义的获取策略会影响:
- 通过 Get() 或 Load() 检索
- 导航关联时隐式发生的检索
- IC标准查询
- 如果使用子选择获取,则进行 HQL 查询
source:追求表现
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)