使用nhibernate时,如何进行ThenFetch()然后引入多个属性/连接?

时间:2015-09-05 13:00:23

标签: c# sql-server nhibernate fluent-nhibernate linq-to-nhibernate

我有以下代码作为Fluent NHibernate查询的一部分

session.Query<Project>()
       .Where(r=>r.IsActive)
       .FetchMany(r => r.ProjectDependencies)
       .ThenFetch(r => r.DependencyProject)
       .ThenFetch(r => r.Owner)

上面的代码工作正常,但问题是我现在要加入并加载一些额外的&#34;属性&#34;除了所有者(如上所述)之外还加入了DependencyProject对象。所以我想做这样的事情:

session.Query<Project>()
       .Where(r=>r.IsActive)
       .FetchMany(r => r.ProjectDependencies)
       .ThenFetch(r => r.DependencyProject)
       .ThenFetch(r => r.Owner)
       .AndAlsoFetch(r=>r.Status)

或者也许是这样:

session.Query<Project>()
       .Where(r=>r.IsActive)
       .FetchMany(r => r.ProjectDependencies)
       .ThenFetch(r => r.DependencyProject)
       .ThenFetch(r => r.Owner && r.Status)

无论如何,要对作为ThenFetch的一部分引入的对象进行多次属性提取吗?

1 个答案:

答案 0 :(得分:-1)

我现在无法测试,所以这可能会偏离基础,但这可能是一种可能的方法:

  var query = session.Query<Project>()
            .Where(r=>r.IsActive)
            .FetchMany(r => r.ProjectDependencies)
            .ThenFetch(r => r.DependencyProject);

  query.ThenFetch(r => r.Owner).ToFuture();
  query.ThenFetch(r => r.Status).ToFuture();

  Project project = query.ToFuture().ToList();