MultiCriteria および ICriteria オブジェクトでできるように、NHibernate.Linq を使用して NHibernate クエリをバッチ処理する方法を知っている人はいますか?
MultiCriteria を使用すると、次のようなものを作成できます。
var crit = session.CreateMultiCriteria()
.Add(session.CreateCriteria(typeof(Entity1)).Add(Restrictions.Eq("Property1","Value"))
.Add(session.CreateCriteria(typeof(Entity2)).Add(Restrictions.Eq("Property2","Value2"));
var result = crit.List();
var list1 = (IList)result[0];
var list2 = (IList)result[1];
CreateCriteria 呼び出しを Linq 呼び出しに置き換えて、次のようにするといいでしょう。
var crit = session.CreateMultiCriteria()
.Add(session.Linq<Entity1>().Where(x => x.Property1 == "Value1")
.Add(session.Linq<Entity2>().Where(x => x.Property2 == "Value2");
var result = crit.List();
var list1 = (IList<Entity1>)result[0];
var list2 = (IList<Entity2>)result[1];
他のほとんどのクエリに Linq API を使用しています。MultiCriteria クエリも実行する必要がある場合は、同じ Linq 構文を使用すると便利です。
ありがとう。