Как настроить таргетинг на псевдоним с ограничения, с помощью QueryOver api?
Насколько я знаю, QueryOver api не позволяет ссылаться на псевдоним по имени, но вы используете типизированный объект. Как я могу добавить ограничение на мой запрос, который нацелен на псевдоним?
Например, я хотел бы сделать что-то похожее на следующее:
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
вместо:
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)));