NHibernate,使用带有Future的QueryOver获取孙子集合

hey*_*uss 5 c# nhibernate

我正在尝试检索父实体的所有集合(非笛卡儿产品),但无法弄清楚如何获得孙子.表结构如下:

在此输入图像描述

下面的代码获取了我的父代及其Child1和Child2集合,以及它的ParentChild3集合,但我不知道如何构造查询以获取Child3孙子(并将它们推迟到Future()).

var parent = _session
    .QueryOver<Parent>()
    .Where(x => x.Id == id)
    .Future<User>();

var children1 =_session
    .QueryOver<Parent>()
    .Where(x => x.Id == id)
    .Fetch(x => x.Children1).Eager
    .Future<Parent>();

var children2 =_session
    .QueryOver<Parent>()
    .Where(x => x.Id == id)
    .Fetch(x => x.Children2).Eager
    .Future<Parent>();

var parentChildren3 =_session
    .QueryOver<Parent>()
    .Where(x => x.Id == id)
    .Fetch(x => x.ParentChildren3).Eager
    .Future<Parent>();

// how to get children3, now?

return parent.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

半相关:这是获得所有收藏品的最佳方式吗?是否更好(并且可能)使用通过连接获得结果的查询?

Fir*_*iro 3

如何获得Children3:

ParentChildren alias = null;
var parentChildren3 =_session
    .QueryOver<Parent>()
    .Where(x => x.Id == id)
    .JoinAlias(x => x.ParentChildren3, () => alias)
    .Fetch(() => alias.Children3).Eager
    .Future<Parent>();
Run Code Online (Sandbox Code Playgroud)

半相关:这是我所知道的最好的方法。

如果 ParentChild 表没有附加列,那么您可以将其映射为标准多对多。NHibernate 将不需要链接表的实体,并且急切的获取会更容易。