Помощь с запросом NHibernate - PullRequest
0 голосов
/ 25 января 2011

У меня есть 2 стола, план и билет.Я хочу, чтобы все записи были в TravelPlan, но не в Ticket.

    Template.Criteria.CreateCriteria("Plan")
              .Add(Subqueries.PropertyNotIn("UserID",
                                            DetachedCriteria.For(typeof(Ticket))
              .SetProjection(Projections.Property("UID")))); 

Приведенный выше запрос не возвращает никаких записей.

1 Ответ

1 голос
/ 26 января 2011

Не могу догадаться, что делает SearchTemplate, но вы применяете проекцию к внешнему критерию, а не к отдельному.

Кроме того, «корневыми» критериями должны быть TravelPlan, а не Ticket.

Другими словами:

criteria = DetachedCriteria.For<TravelPlan>()
               .Add(Subqueries.PropertyNotIn(
                        "UserId",
                        DetachedCriteria.For<Ticket>()
                            .SetProjection(Projections.Property("UID"))))

Предполагается, что TravelPlan имеет свойство UserID, соответствующее свойству UID в Ticket.

...