0
用戶和角色之間存在多對多的關係。我可以輕鬆地將角色添加到多對多表中,但我無法刪除它,它不會給我任何錯誤,但不會刪除要刪除的角色。我嘗試了我發現的一切。這是我的代碼。更新多對多實體框架。無法從多到多的表格中刪除
public User Update(User entity)
{
using (var context = new EnerSysEntities())
{
var user = context.Users.Single(u => u.USER_ID == entity.USER_ID);
//All roles in the data base
List<Role> roleAlreadyAssigned = GetById(entity.USER_ID).Roles.ToList();
//Roles to remove
List<Role> rolesToRemove =
roleAlreadyAssigned.Where(x => entity.Roles.All(y => y.ROLE_ID != x.ROLE_ID)).ToList();
//Roles to add
List<Role> rolesToAdd =
entity.Roles.Where(x => roleAlreadyAssigned.All(y => y.ROLE_ID != x.ROLE_ID)).ToList();
foreach (Role roleToDelete in rolesToRemove.ToList())
{
// Remove the roles from rolesToRemove
user.Roles.Remove(roleToDelete);
}
//Add the roles which are not in the list of rolesToAdd
foreach (Role rol in rolesToAdd)
{
var newRole = new Role { ROLE_ID = rol.ROLE_ID };
context.Roles.Attach(newRole);
user.Roles.Add(newRole);
}
context.SaveChanges();
return entity;
}
}
我錯過了什麼?
你在user.Roles使用惰性加載?或者在調用'var user = context.Users.Single(u => u.USER_ID == entity.USER_ID)後這是空的;' –
爲什麼你再次獲得'GetById(entity.USER_ID)'用戶?嘗試從用戶對象var user = context.Users.Single(u => u.USER_ID == entity.USER_ID)獲取角色;' –
是的,這是真的我會 –