web-dev-qa-db-ja.com

DBContext.Entryは何をしますか?

[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によってアタッチおよび追跡されるようになりました。

28
Idan Yadgar

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

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

25
Parv Sharma