Поиск по нескольким столбцам в NHibernate - PullRequest
2 голосов
/ 21 сентября 2009

Как можно сделать следующее в NHibernate?

    SELECT  ContactName, ContactTel1, ContactTel2, ContactTel3
    FROM tb_Contact
    WHERE (ContactTel1 LIKE '%6440%') OR
         (ContactTel2 LIKE '%6440%') OR
         (ContactTel3 LIKE '%6440%')

Это то, что у меня есть, но я не могу понять, как сделать то же самое с несколькими столбцами.

  all = session.CreateCriteria(typeof(Contact)).Add(Expression.Like(pField,  "6440", MatchMode.Anywhere))
                 .List<Contact>();

Любые указатели высоко ценятся.

Ответы [ 3 ]

4 голосов
/ 21 сентября 2009

Взгляните на выражение Disjunction.

all = session.CreateCriteria (typeof(Contract))
                .Add (
                      Restrictions.Disjunction().Add (Restrictions.Like ("Tel1", "6440")
                                                .Add (Restrictions.Like ("Tel2", "6440")
                                                .Add (Restrictions.Like ("Tel3", "6440")
                     );
1 голос
/ 22 сентября 2009

Вы скучаете по MatchMode ...

all = session.CreateCriteria (typeof(Contact))
                .Add (
                      Restrictions.Disjunction().Add (Restrictions.Like ("Tel1", "6440", MatchMode.Anywhere)
                                                .Add (Restrictions.Like ("Tel2", "6440", MatchMode.Anywhere)
                                                .Add (Restrictions.Like ("Tel3", "6440", MatchMode.Anywhere)
                     );
1 голос
/ 21 сентября 2009
session.CreateCriteria (typeof(Contract))
                .Add (
                      Restrictions.Like ("Tel1", "6440")||
                      Restrictions.Like ("Tel2", "6440")||
                      Restrictions.Like ("Tel3", "6440")
                     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...