8
NHibernateでグリップを開始しました。私はテーブルからすべてのレコードを選択するクエリを実行しようとしていますが、IDの除外フィルタのリスト、例えば。これらのID値を持つ商品以外の商品をすべて手に入れてください。NHibernate - ICriteriaを使用して "NOT IN"クエリを実装します
通常、直接T-SQLでは、NOT IN句のように除外するIDを渡します。
SELECT *
FROM Products
WHERE ProductId NOT IN (1,5,9,23,45)
ICriteriaまたはHQL(ただしICriteriaが望ましい)を使用してNHibernateでこれを行うにはどうすればよいですか?
を試してみてください。ここに私が実装を完了した完全なコードです... query.Add(Expression.Not( "ProductType.Id"、excludedProductTypeIds.ToArray())))); 「Not」と「In」メソッドを見ましたが、そのようにチェーン化するとは考えていませんでした。 –
でも、ORとANDコマンドでも同じことができます。 –
他のSQLダイアレクト/エンジンがどのように連携しているかはわかりませんが、SQL Serverのクエリパラメータの制限は2100項目です。NHibernateはIN文にパラメータを設定し、excludedProductTypeIdsが2100を超えると失敗します。 –