2013-02-23 1 views
22
[HttpPost] 
public ActionResult Edit(Movie movie) 
{ 
    if (ModelState.IsValid) 
    { 
     db.Entry(movie).State = EntityState.Modified; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    return View(movie); 
} 

このアクションは、ムービーモデルを受け取り、データベースでそれを更新します。
しかし、私はどのように把握することはできません。
movieオブジェクトはdbに関連付けられていないため、エンティティ・フレームワークはどのようにdbのどの行を更新するべきかを知っていますか?DBContext.Entryは何をしますか?

私はEntryメソッドに何か関係があると確信していますが、実際にこのメソッドが何をしているのか分かりません。私はそれが情報を提供することを読むが、ちょうどStateを変更して、それが添付され、によって追跡されるようになることを理解できない。

答えて

21

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

あなたはすでに存在している知っている実体を持っている場合変更が行われている可能性がある場合は、エンティティをアタッチし、その状態をModifiedに設定するようにコンテキストに指示できます。 http://msdn.microsoft.com/en-US/data/jj592676

+0

ただし、[Attach](http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.attach(v = versus103).aspx)方法。 –

+0

入手しました。ありがとうございました。 :) –

+0

このメソッドは、エンティティクラスのどのプロパティがキーであるかを認識しており、そのキーでエンティティを取得して添付するために内部的に検索を定式化できます。右?もしそうなら、それは最高です。 –

関連する問題