0
複雑な基準に従ってデータセットが必要なときに最高のパフォーマンスが得られるのは何ですか? 2つの選択肢があります:複雑なICriteriaまたはSession.Linqステートメントを作成するか、ルートオブジェクトからLINQを使用し、Hibernateに遅延ロードを処理させます。 (セッションを使用して)NHibernateのパフォーマンス:Session.CriteriaとLINQのインメモリ
オプション1:(大きな結果セットは、SQLサーバからプルされることを意味するかもしれない「インメモリ」クエリを行うために使用するルートオブジェクト)
var result = Session.Linq<Contractor>().Where(contractor => contractor.account == "[email protected])
//....
.Where(condition => condition.Orders.Any(condition))
//... more conditions
オプション2:
var contractor = Session.Linq<Contractor>().Single(c => c.Id == 1);
contractor.Orders.SelectMany(o => o.NestedCollection)
.Where(c => c.List.Any(condition))
.Where(//..... more complex filtering;
NHPRofではメモリ内の亜種が警告を生成しませんが、セッションバリアントは、あまりにも多くの結合がパフォーマンスを低下させる可能性があるという警告を生成します。