2

mvc アプリケーションにエンティティ モデルがあります。私は2つのテーブルを持っています:

エンジン: ID、名前、パーツ

部分: ID、EngineId、名前、価格

これら 2 つのテーブルの間には 1 対多の関係があります。

ビューで:

@model Engine

<input type="hidden" name="Id" value="@Model.Id" />
<input type="text" name="Name" value="@Model.Name" />

@for(var part in Model.Parts)
{
    <input type="hidden" name="Parts.Index" value="@guide" />
    <input type="hidden" name="Parts[@guide].Id" value="@part.Id" />
    <input type="text" name="Parts[@guide].Name" value="@part.Name" />
    <input type="text" name="Parts[@guide].Price" value="@part.Price" />
}

コントローラーで:

public ActionResult Edit(int id)
{
    var model = context.Engines.FirstOrDefault(x=>x.Id == id);
    return View("Engine", model);
}

[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
    var model = context.Engines.FirstOrDefault(x=>x.Id == id);
    UpdateModel(model);
    context.SaveChanges();
}

その場でパーツを追加したり削除したりしています。投稿すると、model.Parts にあるパーツの一覧が表示されます。それらはすべてエンティティ状態が追加されています。Id を持つすべてのパーツには EntityState.Modified が必要であり、削除されたパーツには EntityState.Deleted が必要であり、追加されたオブジェクトには EntityState.Added が必要です。出来ますか?(EF バージョン 4.0)

4

1 に答える 1

1

デフォルトのバインダーは、EF の状態について何も知りません。エンジン クラスの新しいモデル バインダーを作成し、そこに状態を手動で設定できます。

于 2012-09-18T08:09:25.100 に答える