Как операторы IN () работают в NHibernate? (Использование критериев)

Я пытаюсь создать эквивалент приведенного ниже, используя NHibernate. Я выполнил все сопоставления, используя fluent, и я могу отлично выполнять базовые запросы, но я понятия не имею, как это сделать.

-**Product Table**
Reference
Title
Subjects (Many to Many relationship)
Price

-**Subject table**
SubjectID
Name

-**SubjectToProductMapping Table**
Reference
SubjectID

Теперь мне нужно сделать следующее:

SELECT * 
FROM Product
WHERE Reference IN 
    (Select Reference FROM SubjectToProductMapping WHERE SubjectID = @SubjectID)

Имея в виду, что таблица Product для публикации была значительно упрощена, и я бы предпочел использовать оператор IN, чтобы упростить остальную часть запроса. В идеале я хотел бы создать запрос с использованием критериев, потому что я буду использовать критерии для страницы результатов.

заранее спасибо


person John_    schedule 30.12.2008    source источник


Ответы (1)


Зачем использовать in, если достаточно соединения? при условии, что ваш класс продуктов имеет сопоставленную коллекцию предметов, вы можете просто использовать этот критерий

IList<Product> results = session.CreateCriteria(typeof(Product))
                                .CreateCriteria("Subjects", JoinType.Join)
                                .Add(Resitctions.Eq(Projections.ID, subjectID))
                                .List<Product>();
person Community    schedule 02.01.2009