Как операторы IN () работают в NHibernate? (Используя критерии) - PullRequest
2 голосов
/ 31 декабря 2008

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

-**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, чтобы упростить остальную часть запроса. В идеале я хотел бы создать запрос с использованием Criteria, потому что я буду использовать Criteria для отображения результатов.

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

1 Ответ

0 голосов
/ 03 января 2009

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

IList<Product> results = session.CreateCriteria(typeof(Product))
                                .CreateCriteria("Subjects", JoinType.Join)
                                .Add(Resitctions.Eq(Projections.ID, subjectID))
                                .List<Product>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...