Моя схема - довольно простая схема членства и ролей:
Users table:
UserId (PK)
UserName
etc...
Roles table:
RoleId (PK)
RoleName
UsersInRole table
UserId (FK to Users table)
RoleId (FK to ROles table)
Итак, у нас есть таблица «многие ко многим» UsersInRole вместе с двумя другими таблицами. Когда я добавляю схему в EF, сгенерированный код ORM (и конструктор EF) показывает только пользователей и роли (без проблем, EF управляет многими ко многим).
Итак, вот мой вопрос. Я хочу перечислить всех пользователей, у которых нет роли «Супер Админ». Похоже, простая проблема, просто используйте SelectMany в EF. Проблема в том, что у пользователя может быть несколько ролей, одна из которых - «Супер Администратор». Если я использую SelectMany (как показано ниже), я все равно получу тех пользователей, у которых есть «Super Admin» в дополнение к другим ролям. SelectMany работает только в том случае, если у пользователя есть одна роль, и эта роль называется «Super Admin»
Я пытался собрать SQL для работы с этим в Linq-to-EF, но мне тоже не повезло.
var usrQry = context.Roles.Where(r => r.RoleName != "Super Admin")
.SelectMany(r => r.Users);
Любая помощь приветствуется - заранее спасибо.