Из вашего комментария:
context.User.Roles дает мне список
ролей. Я могу сделать для каждого и
обновить идентификатор, но как мне обновить
соответствующий UserId foreach RoleId в
этот стол?
Прежде всего, вы НЕ должны обновлять идентификаторы.
Во-вторых, поскольку вы используете EF, вы должны попытаться мыслить с точки зрения объектов (или сущностей), а не «таблиц DB-многие-ко-многим-сопоставлениям». Каждая User
сущность имеет коллекцию Roles
. Если вы удалите Role
из коллекции User.Roles
и вызовете context.SaveChanges()
, соответствующая запись будет удалена из таблицы UserRoles
. Аналогично, когда вы добавляете объект Role
в коллекцию User.Roles
и сохраняете изменения, в таблице UserRoles
будет создана новая запись.
Следующий пример может быть полезен для ясности:
var user = context.Users.Include("Roles").Where(u => u.Name == "User1").FirstOrDefault();
user.Roles.Remove(user.Roles.Where(r => r.Name == "Admin").FirstOrDefault());
context.SaveChanges();
(проверка на нулевую ссылку для простоты опущена).