MVC プロジェクトがあり、親エンティティと複数の子エンティティを同時に更新する必要がある場合があります。投稿アクションで、「x と x の間の関係を削除しようとしましたが、関係の外部キーの 1 つを削除しようとしました」というメッセージが表示されますが、これは奇妙です。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();
}
誰でもこの動作を説明できますか。繰り返しますが、私は子エンティティを削除したりドロップしたりしません!