我有一个 MVC 项目,我有一个需要同时更新父实体和多个子实体的情况。在发布操作中,我收到“尝试删除 x 和 x 之间的关系,但是关系的外键之一”,这很奇怪,我所做的只是更新,我没有删除任何实体。我正在使用 Linq to SQL 和 MVC3。伪代码如下:
@model Project.Models.ParentModel
...
@using (Html.BeginForm()) {
@Html.Label("Parent property")
@Html.EditorFor(model => model.ParentProperty)
@foreach (var child in Model.Childs)
{
Html.RenderPartial("_EditChild", child)
// Which is nothing more than a label and an editor for a property like:
// @model Project.Models.ChildModel
// @Html.Label("Child property")
// @Hteml.EditorFor(model => model.ChildProperty)
}
...
}
动作看起来像:
public ActionResult Edit(int id, FormCollection collection)
{
var parent = new Parent();
TryUpdateModel(Parent()); // which updates the parent and the child properties correctly
dataContext.SubmitChanges();
}
任何人都可以解释这种行为。再一次,我不会删除或删除任何子实体!