2013-02-23 14 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); 
} 

To działanie otrzymuje model filmu i aktualizuje go w bazie danych.
Ale nie mogę wymyślić, jak.
Obiekt movie nie jest dołączony do db, więc w jaki sposób struktura encji wie, który wiersz w db powinien zostać zaktualizowany?Co robi plik DBContext.Entry?

Jestem pewien, że metoda Entry ma z tym coś wspólnego, ale tak naprawdę nie wiem, co ta metoda robi. Czytałem, że to dostarcza informacji, ale nie mogę zrozumieć, jak po prostu zmieniając State wpis staje się dołączony i śledzony przez DBContext.

Odpowiedz

21

po prostu przywiązuje podmiot do DataContext inaczej trzeba będzie szukać podmiotu przy użyciu klucza podstawowego, a następnie zmienić wartość i zapisać go ..

Jeżeli podmiot, który znasz już istnieje w bazie danych, ale do których mogły zostać wprowadzone zmiany, możesz powiedzieć kontekstowi, aby dołączyć encję i ustawić jej stan na Zmodyfikowany. http://msdn.microsoft.com/en-US/data/jj592676

+0

Ale do tego masz [Załącz] (http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.attach (v = vs.103) .aspx) metoda. –

+0

Mam to. Dziękuję Ci. :) –

+0

Tak więc ta metoda wie, które z właściwości klasy encji są kluczami i może wewnętrznie sformułować wyszukiwanie, aby uzyskać encję za pomocą klucza (-ów) i dołączyć ją. Dobrze? Jeśli tak, to jest niesamowite. –