【发布时间】:2016-05-20 20:30:36
【问题描述】:
NHibernate 3 或 4 是否具有与实体框架的“包含”方法等效的方法,该方法采用 字符串参数 而不是 llambda?我想在 NHibernate 中做这样的事情:
Contact contact =
context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails")
.FirstOrDefault();
我从this post 发现了这段代码,它在一个很酷的循环中使用“Fetch”,但这仅处理作为主对象的第一级子对象的对象,而上面的 EF 代码下降了 2 个级别不需要强类型的 llambda。
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;
}
【问题讨论】:
-
这里需要HQL吗?有没有人写过一个简洁的方法来生成适当的 HQL 来处理像 .Include("SalesOrderHeaders.SalesOrderDetails") 这样的场景?
标签: c# entity-framework linq nhibernate fluent-nhibernate