Ho iniziato a fare i conti con NHibernate. Sto cercando di eseguire una query che seleziona tutti i record da una tabella ma con un elenco di filtri di esclusione di ID, ad es. prendermi tutti i prodotti tranne quelli con questi valori di ID.NHibernate - Implementare la query "NOT IN" utilizzando ICriteria
Normalmente in T-SQL diretto passerei gli ID da escludere in una clausola NOT IN in questo modo.
SELECT *
FROM Products
WHERE ProductId NOT IN (1,5,9,23,45)
Come faccio a fare questo in NHibernate utilizzando ICriteria o HQL (ma preferibilmente ICriteria)?
impressionante, che ha funzionato perfettamente, grazie. Ecco il codice completo che ho finito per implementare ... query.Add (Expression.Not (Expression.In ("ProductType.Id", excludedProductTypeIds.ToArray()))); Ho visto i metodi "Not" e "In", ma non ho pensato di incatenarli in quel modo. –
Sì, puoi fare la stessa cosa con i comandi OR e AND. –
Una nota a margine, non è sicuro di come altri dialetti/motori SQL funzionano insieme, ma SQL Server ha un limite del parametro di ricerca di 2100 elementi, NHibernate compila le sue istruzioni IN con i parametri e avrà esito negativo se iIl'IDProdottoDati esclusi supera 2100. –