表格是:
表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方法来修复异常。非常感谢