GetById()
操作后,将子实体的集合设置为来自MVC视图的新列表时,遇到了这个错误。
操作失败:由于一个或多个外键属性是非空的,因此无法更改关系。当对关系进行更改时,相关的外键属性被设置为null值。如果外键不支持null值,则必须定义一个新的关系,将外键属性分配给另一个非null值,或者删除无关的对象。
我不太理解这一行:
由于一个或多个外键属性是非空的,所以无法更改关系。
为什么我要更改两个实体之间的关系?它应该在整个应用程序的生命周期内保持不变。
异常发生的代码很简单,只是将修改后的子类分配给现有父类的集合。这样做可以处理删除子类、添加新子类和修改子类的情况。我本以为Entity Framework会处理这个问题。
这些代码可以简化为:
var thisParent = _repo.GetById(1);
thisParent.ChildItems = modifiedParent.ChildItems();
_repo.Save();
int?
以匹配数据库,问题得到解决。 - redwards510