我有一个集合,我需要queryOver并添加限制。
public class User {
public int Id {get;set;}
public string Name {get;set;}
public IList<Role> Roles {get;set;}
}
现在我想在Nhibernate中查询,如果用户通过Admin角色获取任何角色,我还需要获得结果。
Conjunction conjunction = new Conjunction();
Disjunction disjunction = new Disjunction();
if (!string.IsNullOrEmpty(search))
{
disjunction.Add(Restrictions.On<User>(e => e.Name)
.IsLike(string.Format("%{0}%", search)));
conjunction.Add(disjunction);
}
IList<User> users = NhSession.QueryOver<User>()
.Where(conjunction)
.OrderBy(x => x.Name).Asc()
.Take(maxResults)
.List();
如果我有一个RoleName字符串参数并从查询中获取这些记录,我该如何过滤。
答案 0 :(得分:0)
你应该能够加入Roles
(假设这是一个映射的关联)并过滤:
Role roleAlias = null;
IList<User> users = NhSession.QueryOver<User>()
.Where(conjunction)
.JoinAlias(() => user.Roles, () => roleAlias)
.Where(() => roleAlias.Name == "Admin") // or whatever your restriction is
.OrderBy(x => x.Name).Asc()
.Take(maxResults)
.List();