Простой запрос с предложением «ИЛИ» (Criteria API) - PullRequest
1 голос
/ 18 июля 2009

У меня есть этот простой запрос:

ICriteria crit = session.CreateCriteria(typeof(Article));

crit.CreateCriteria("Category", global::NHibernate.SqlCommand.JoinType.InnerJoin)
        .Add(Restrictions.Eq("Name", "Fun"));

Возвращает все статьи в категории «Веселье». У меня вопрос, как я могу добавить простое предложение ИЛИ, чтобы вернуть также любую статью с "Заголовок" = "Новая шутка", даже если она не относится к категории "весело"?

Кажется, я не могу заставить это работать ...

Редактировать: Я знаю, что должен перейти к LeftOuterJoin, вопрос о правильном синтаксисе для создания этого запроса.

Edit2 : Чтобы сделать это более понятным, SQL-запрос, который я пытаюсь построить, будет:

SELECT article.* 
FROM article LEFT OUTER JOIN category ON (article.category = category.id)
WHERE category.name = 'fun' OR article.title = 'new joke'

Ответы [ 2 ]

1 голос
/ 18 июля 2009

Вы можете просто использовать обычный оператор C # ИЛИ:

Restrictions.Eq("Category.Name", "Fun") || Restrictions.Eq("Title", "New Joke")
1 голос
/ 18 июля 2009

Вам необходимо использовать критерии Or, например, так:

crit.Add( Expression.Or(
    Expression.Eq("Category.Name", "Fun"),
    Expression.Eq("Title", "New Joke")
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...