本文介绍了如何渴望在列表/集合中加载对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下查询:
ObjectB objectBAlias = null;
ObjectC objectCAlias = null;
var query = session.QueryOver<ObjectA>();
var results = query
.JoinAlias(x => x.listOfBs, () => objectBAlias)
.JoinAlias(x => objectBAlias.ObjectC, () => objectCAlias)
.TransformUsing(new DistinctRootEntityResultTransformer())
.List<ObjectA>();
class ObjectA
{
IList<ObjectB> listOfBs;
}
class ObjectB
{
ObjectA a;
ObjectC c;
}
class ObjectC
{
int x;
}
ObjectA与ObjectC的关系为many-to-many
,其中ObjectB为联接表. ObjectA具有ObjectB的列表,而ObjectB具有ObjectC的比例.我正在尝试加载ObjectC,但没有成功.
ObjectA has a many-to-many
relationship to ObjectC with ObjectB being the joining table. ObjectA has a list of ObjectB's, and ObjectB has a proporty of ObjectC. I'm trying to eager load ObjectC but have had no success.
让所有ObjectC渴望加载的唯一方法是这样做:
The only way I've gotten all the ObjectCs to eager load was by doing this:
foreach (ObjectA a in results)
{
foreach (var b in a.listOfBs)
{
NHibernateUtil.Initialize(b.c);
}
}
但这似乎并不能很好地扩展.
But this doesn't seem like something that would scale very well.
推荐答案
我建议-不要尝试(急于加载多对多).而是-使用内置功能:
I would suggest - do not try that (eager loading of many-to-many). Instead - use built in feature:
要获取更多详细信息,请检查以下内容:
To get more details check these:
- How to Eager Load Associations without duplication in NHibernate?
- NHibernate Fetch/FetchMany duplication in resultset, how to fix with ToFuture()
这篇关于如何渴望在列表/集合中加载对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!