37
[HttpPost]
public ActionResult Edit(Movie movie)
{
    if (ModelState.IsValid)
    {
        db.Entry(movie).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(movie);
}

このアクションは、ムービーモデルを受け取り、データベースで更新します。
しかし、私はその方法を理解できません。
オブジェクトはデータベースにアタッチされていないので、エンティティフレームワークはデータベースのmovieどの行を更新する必要があるかをどのように認識しますか?

Entryメソッドはそれと関係があると確信していますが、このメソッドが何をするのかはよくわかりません。State情報を提供していると読みましたが、エントリのを変更するだけでは、が添付されて追跡される方法がわかりませんDBContext

4

1 に答える 1

34

エンティティを dataContext にアタッチするだけです。それ以外の場合は、主キーを使用してエンティティを検索し、値を編集して保存する必要があります。

データベースに既に存在することがわかっているが、変更が加えられた可能性があるエンティティがある場合は、コンテキストにエンティティをアタッチし、その状態を変更済みに設定するように指示できます。 http://msdn.microsoft.com/en-US/data/jj592676

于 2013-02-23T21:15:15.397 に答える