2013-02-23 30 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對象沒有附加到數據庫,那麼實體框架如何知道數據庫中的哪一行應該更新?DBContext.Entry是做什麼的?

我確定Entry方法與它有關,但我不知道這個方法是幹什麼的。我讀到它提供的信息,但我不明白如何通過更改State條目,它將附加和跟蹤由DBContext

回答

21

它只是附加的實體到DataContext否則就會使用主鍵來搜索實體,然後編輯該值,並將其保存..

如果你有,你知道已經存在的實體在數據庫中,但可能已做出更改,則可以告訴上下文來附加實體並將其狀態設置爲Modified。 http://msdn.microsoft.com/en-US/data/jj592676

+0

但是爲此,您有[附加](http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.attach(v = vs.103).aspx)方法。 – 2013-02-23 21:26:00

+0

明白了。謝謝。 :) – 2013-02-23 21:55:40

+0

因此,此方法知道實體類的哪些屬性是關鍵字,然後可以在內部制定搜索以通過其關鍵字獲取實體並將其附加。對?如果是這樣,那真棒。 – 2015-01-12 12:29:44