如何使用Entity Framework从多对多关系中删除行

时间:2018-01-04 07:34:12

标签: c# database many-to-many

表格是:

Menu

Id (int Primary Key)
Name (string)
virtual ICollection MenuRoles(many to many)

RoleMenu

Id (int Primary Key)
RoleId (Foreign key to Role.Id not-nullable)
MenuId (Foreign key to Menu.Id not-nullable)

Role

Id (int Primary Key)
Name (string nullable)

代码是:

var menuToUpdate = db.Menus.Include(i => i.MenuRoles).Where(i => i.ID == 1).Single();

var menuRole = menuToUpdate.MenuRoles.Where(x => x.RoleID == 0).FirstOrDefault();
menuToUpdate.MenuRoles.Remove(menuRole);

db.SaveChanges();

我得到的例外:

  

操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。'

我该如何解决这个问题?实际上,我提到了许多其他问题,例如Entity Framework doesn't want to remove rows in table with many-to-many relationship,但我认为它们不是我想要的。我想像上面的代码一样使用remove方法来修复异常。非常感谢

0 个答案:

没有答案