基本的に私のアプリケーションでは、次のコードを使用して、ページでの選択に応じて式を作成しています。
Expression<Func<T, bool>> expr = PredicateBuilder.True<T>();
expr = expr.And(b => b.Speed >= spec.SpeedRangeFrom && b.Speed <= spec.SpeedRangeTo);
...
複数の「or」および「and」条件を含む長い式になる傾向があります。
式の作成が完了したら、次のようなリポジトリに渡しました。
var results = Session.Query<T>().Where(expr).ToList();
それに関する問題は、結果を返すのに非常に時間がかかることです。また、式が長いほど、結果セットを返すのに時間がかかることにも気付きました。
また、NHibernate プロファイラーを使用して、生成された sql ステートメントを分析しました。SQL Server Studio で sql ステートメントを個別に実行すると、1 秒未満しかかかりませんでした。
ほとんどの時間は、式の作成または sql ステートメントへの変換に費やされたようです。
この問題を回避する方法はありますか?
NHibernate の使用経験はあまりありません。誰かがこれにいくつかの光を当てることができれば、それは素晴らしいことです.
時間を割いて読んでいただきありがとうございます。