19
由于一个或多个外键属性不可为空,因此无法更改该关系
在实体上获取GetById()并将子实体的集合设置为来自MVC视图的新列表时,出现此错误。 操作失败:由于一个或多个外键属性不可为空,因此无法更改该关系。对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。 我不太明白这一行: 由于一个或多个外键属性不可为空,因此无法更改该关系。 为什么要更改2个实体之间的关系?在整个应用程序的整个生命周期中,它应保持不变。 发生异常的代码是简单地将集合中的已修改子类分配给现有父类。希望这将满足删除子类,添加新类和修改的要求。我本以为实体框架可以解决这个问题。 代码行可以简化为: var thisParent = _repo.GetById(1); thisParent.ChildItems = modifiedParent.ChildItems(); _repo.Save();