ユーザーとロールのテーブルがあります。ユーザーは複数のロールを持つことができます。
特定の役割を持たないすべてのユーザーを取得したい。問題は、ユーザーに 2 つのロールがあり、そのうちの 1 つが不要なロールである場合、ユーザーは引き続き返されることです。
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);
}
より良い解決策を知っている人はいますか?ありがとう!