NHibernate 3或4是否等效于Entity Framework的“包含”方法,该方法采用字符串参数而不是llambda?我想在NHibernate中做这样的事情:
Contact contact =
context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails")
.FirstOrDefault();
我从this post那里看到了这段代码,该代码在很酷的循环中使用“获取”,但这只处理作为主对象的第一级子对象的对象,而上述EF代码下降了2级,而无需非常严格型lambdas。
public IQueryable<T> All<T>(params Expression<Func<T, Object>> [] fetchPaths)
{
var queryable = this.session.Query<T>();
foreach (var fetchPath in fetchPaths)
{
queryable = queryable.Fetch(fetchPath);
}
return queryable;
}
最佳答案
NHibernate有第二种方法,称为ThenFetch。你将不得不写
this.session.Query<T>()
.Fetch(x => x.Property)
.ThenFetch(x => x.SubProperty);