J'ai commencé à m'habituer à NHibernate. J'essaie d'effectuer une requête qui sélectionne tous les enregistrements d'une table mais avec une liste de filtres d'exclusion d'ID, par exemple. Obtenez-moi tous les produits sauf ceux-ci avec ces valeurs d'identification.NHibernate - Implémenter la requête "NOT IN" en utilisant ICriteria
Normalement en T-SQL direct, je passerais les ID à exclure dans une clause NOT IN comme ça.
SELECT *
FROM Products
WHERE ProductId NOT IN (1,5,9,23,45)
Comment puis-je faire cela en utilisant NHibernate ICriteria ou HQL (mais de préférence ICriteria)?
impressionnant, qui a fonctionné parfaitement, merci. Voici le code complet que j'ai fini par implémenter ... query.Add (Expression.Not (Expression.In ("ProductType.Id", excludedProductTypeIds.ToArray()))); J'ai vu les méthodes 'Non' et 'In', mais je n'ai pas pensé à les enchaîner comme ça. –
Yup, vous pouvez faire la même chose avec les commandes OR et AND. –
Une note de côté, pas sûr comment les autres dialectes/moteurs SQL travaillent ensemble, mais SQL Server a une limite de paramètre de requête de 2100 éléments, NHibernate remplit ses instructions IN avec des paramètres et échouera si votre excludedProductTypeIds dépasse 2100. –