我有以下代码可作为Fluent NHibernate查询的一部分
session.Query<Project>()
.Where(r=>r.IsActive)
.FetchMany(r => r.ProjectDependencies)
.ThenFetch(r => r.DependencyProject)
.ThenFetch(r => r.Owner)
上面的代码可以正常工作,但是问题是我现在想加入并加载一些其他的“属性”,这些属性是除Owner(如上所述)之外的
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
一部分引入的对象上进行多个属性提取吗? 最佳答案
我目前无法测试,因此这可能会偏离基础,但这可能是一种可能的方法:
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();