8
Zacząłem radzić sobie z NHibernate. Próbuję wykonać kwerendę, która wybiera wszystkie rekordy z tabeli, ale z listy filtrów wykluczających identyfikatorów, np. zdobądź wszystkie produkty oprócz tych o tych wartościach ID.NHibernate - Zaimplementuj zapytanie "NOT IN" za pomocą ICriteria
Zwykle w bezpośrednim T-SQL przekazywałbym identyfikatory, które miałyby być wykluczone do klauzuli NOT IN, tak jak.
SELECT *
FROM Products
WHERE ProductId NOT IN (1,5,9,23,45)
Jak zrobić to w NHibernate za pomocą ICriteria lub HQL (ale najlepiej ICriteria)?
Awesome, że pracował idealnie, dzięki. Oto pełny kod I zakończył się realizacji ... query.Add (Expression.Not (Expression.In ("ProductType.Id", excludedProductTypeIds.ToArray()))); Widziałem metody "Nie" i "W", ale nie myślałem, żeby je tak łańcuchować. –
Tak, możesz zrobić to samo z poleceniami LUB i ORAZ. –
Nota boczna, nie wiem, jak inne dialekty/silniki SQL współpracują ze sobą, ale SQL Server ma limit parametrów zapytania wynoszący 2100 pozycji, NHibernate zapełnia swoje instrukcje IN parametrami i nie powiedzie się, jeśli Twój excludedProductTypeIds przekroczy 2100. –