我有一個用戶和角色表。用戶可以有多個角色。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);
}
任何人都知道一個更好的解決方案?謝謝!