NHibernate加入获取(种类)
给定团队->运动员关系并查询所有运动员。什么 我是否误解了NHibernate加入获取(种类),nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,给定团队->运动员关系并查询所有运动员。什么 我是否误解了fetch=“Join”?这个映射是否会导致 要通过联接加载的团队?当迭代运动员时,它 仍然懒散的团队 public class AthleteMap : ClassMapping<Athlete> { public AthleteMap() { ManyToOne(a => a.Team, o =>
fetch=“Join”
?这个映射是否会导致
要通过联接加载的团队?当迭代运动员时,它
仍然懒散的团队
public class AthleteMap : ClassMapping<Athlete>
{
public AthleteMap()
{
ManyToOne(a => a.Team, o =>
{
o.Fetch(FetchKind.Join);
o.Lazy(LazyRelation.NoLazy);
}
);
}
}
公共类AthleteMap:ClassMapping
{
公共体育地图()
{
多通(a=>a.团队,o=>
{
o、 Fetch(FetchKind.Join);
o、 懒惰的(懒散的关系);
}
);
}
}
它产生了这个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);
var session=factory.OpenSession();
foreach(会话中的var.Query())
Console.WriteLine(“{0}{1}”,attacher.FirstName,attacher.Team.Name);
NHibernate Linq查询不使用映射的获取策略。您必须像这样在linq查询中获取()
var session = factory.OpenSession();
foreach (var athlete in session.Query<Athlete>().Fetch(x => x.Team))
Console.WriteLine("{0} {1}", athlete.FirstName, athlete.Team.Name);
var session=factory.OpenSession();
弗雷奇(var Athletor in session.Query您是否得到异常?这是为什么?当您迭代时,您会看到每个Athletor
的查询都会获取一个团队
?我的意思是,映射是正确的,除了急切获取之外?没有异常。@GertArnold yes在迭代时,它会在每次迭代时查询团队。谢谢…可惜他们的Linq实现不完整。)我喜欢这样。