使用SetFetchMode FetchMode.Eager获取无限子类

时间:2015-05-23 13:23:27

标签: nhibernate fluent-nhibernate

我想热切地获取所有级别的子对象,直到持续数为0,但这只返回第一级。

在这个模式中,我不能急切地加载D和F,例如;

py> v = [ [ x, y ] for x in ['a','b','c'] for y in range(1,5) ]
py> [''.join([let, num]) for let, num in v]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
TypeError: sequence item 1: expected str instance, int found
py> ['{}{}'.format(let, num) for let, num in v]
['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4', 'c1', 'c2', 'c3', 'c4']

1 个答案:

答案 0 :(得分:0)

我知道你正在使用Criteria,但是对于Linq你可以这样做:

using (var session = NHibernateHelper.OpenSession())
{
   return session.Query<Foo>()
                 .Fetch(x => x.B)
                 .ThenFetch(x => x.D)
                 .Fetch(x => x.B)
                 .ThenFetch(x => x.F)
                 .Fetch(x => x.C)
                 .Fetch(x => x.E)
                 .Fetch(x => x.G)
                 .ToList();
}

但是,根据您的数据模型的样子,这可能不是表现最好的方式。