Структура сущности 4 многие ко многим обновляют
У меня есть 3 таблицы -
User (Id, Name)
Roles (Id, Name)
UserRoles (UserId, RoleId)
Я думаю, что они говорят сами за себя. Как обновить запись (UserId и RoleId) в UserRoles?
context.User.Roles
дает мне список ролей, но как мне их обновить?
Спасибо.
1 ответ
Из вашего комментария:
context.User.Roles дает мне список ролей. Я могу сделать для каждого и обновить Id, но как мне обновить соответствующий UserId foreach RoleId в этой таблице?
Прежде всего, вы не должны обновлять идентификаторы.
Во-вторых, поскольку вы используете EF, вы должны попытаться мыслить с точки зрения объектов (или сущностей), а не "таблиц DB-многие-ко-многим-отображения". каждый User
сущность имеет коллекцию Roles
, Если вы удалите Role
от User.Roles
сбор и вызов context.SaveChanges()
соответствующая запись будет удалена из UserRoles
tabele. Точно так же, когда вы добавляете 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();
(проверка на нулевую ссылку для простоты опущена).