Как выбрать псевдоним из ограничения с помощью API QueryOver? - PullRequest
11 голосов
/ 05 марта 2011

Насколько я знаю, API QueryOver не позволяет вам ссылаться на псевдоним по имени, а вы используете типизированный объект. Как я могу добавить ограничение к моему запросу, который нацелен на псевдоним?

Например, я хотел бы сделать что-то похожее на следующее:

var query = session.QueryOver<Person>().JoinQueryOver(x => x.Dogs, () => dogAlias);

return query.Where(Restrictions.Disjunction()
                       .Add(Restrictions.Like("Name", searchQuery, MatchMode.Anywhere))
                       .Add(Restrictions.Like("dogAlias.Name", searchQuery, MatchMode.Anywhere)));

1 Ответ

11 голосов
/ 07 марта 2011

вместо:

Restrictions.Like("dogAlias.Name", searchQuery, MatchMode.Anywhere)

используйте:

Restrictions.On(() => dogAlias.Name).IsLike(searchQuery, MatchMode.Anywhere)

Таким образом, полный запрос будет:

var query = session.QueryOver<Person>()
            .JoinQueryOver(x => x.Dogs, () => dogAlias);

return query.Where(Restrictions.Disjunction()
                .Add(Restrictions.On<Person>(p => p.Name).IsLike(searchQuery, MatchMode.Anywhere))
                .Add(Restrictions.On(() => dogAlias.Name).IsLike(searchQuery, MatchMode.Anywhere)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...