NHibernate 3或4等效于Entity Framework包括

And*_*ndy 3 c# linq nhibernate entity-framework fluent-nhibernate

NHibernate 3或4是否具有与Entity Framework的“包含”方法等效的方法,该方法采用字符串参数而不是llambda?我想在NHibernate中做这样的事情:

Contact contact =
        context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails")
        .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我从这篇文章中看到了这段代码,该代码在一个很酷的循环中使用“获取”,但这仅处理作为主要对象的第一级子对象的对象,而上述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;
}
Run Code Online (Sandbox Code Playgroud)

Rol*_*rgi 5

NHibernate有第二种方法,称为ThenFetch。你将不得不写

this.session.Query<T>()
            .Fetch(x => x.Property)
            .ThenFetch(x => x.SubProperty);
Run Code Online (Sandbox Code Playgroud)