Nhibernateのlinqを使用して、フェッチモードを複数のオブジェクトに熱心に設定する方法はありますか? 1つのオブジェクトしか設定できない拡張メソッドがあるようです。ただし、複数のオブジェクトに設定する必要があります。これは可能ですか?ありがとう
一度以上使用してください。
IList<Entity> GetDataFromDatabase()
{
var query = session.Linq<Entity>();
query.Expand("Property1");
query.Expand("Property2");
return query.ToList();
}
新しいLinqプロバイダーは、少し異なる方法でそれを行います。
var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();
詳細: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html
私の知る限り、これは同等ではありません。SetFetchModeはオブジェクトツリーをハイドレートし、Expandメソッドはデカルト積を取得します。
_@Mike Hadlow
_の回答に進み、次のレベル(孫)を取得する必要があります。
var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();