如何使用QueryOver api从限制中定位别名?

Jim*_*rts 11 nhibernate

据我所知,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)));
Run Code Online (Sandbox Code Playgroud)

pso*_*usa 11

代替:

Restrictions.Like("dogAlias.Name", searchQuery, MatchMode.Anywhere)
Run Code Online (Sandbox Code Playgroud)

使用:

Restrictions.On(() => dogAlias.Name).IsLike(searchQuery, MatchMode.Anywhere)
Run Code Online (Sandbox Code Playgroud)

因此,完整的查询将变为:

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)));
Run Code Online (Sandbox Code Playgroud)