我有一个用户和角色表。用户可以有多个角色。NHibernate查询集合
我想抓住所有没有特定角色的用户。问题是如果一个用户有两个角色,一个是我们不想要的角色,那么用户仍然会被退回。
public IList<User> GetUserByWithoutRole(string role)
{
return CreateQuery((ISession session) => session.CreateCriteria<User>()
.CreateAlias("Roles", "Roles")
.Add(!Restrictions.Eq("Roles.RoleDescription", role))
.List<User>());
}
我想出的唯一解决办法是客户端
public IEnumerable<User> GetUserByWithoutRole(string role)
{
return CreateQuery((ISession session) => session.CreateCriteria<User>()
.CreateAlias("Roles", "Roles")
.Add(!Restrictions.Eq("Roles.RoleDescription", role))
.List<User>()).Where(u => u.Roles.FirstOrDefault(r => r.RoleDescription == role) == null);
}
任何人都知道一个更好的解决方案?谢谢!