web-dev-qa-db-fra.com

Que fait 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);
}

Cette action reçoit un modèle de film et le met à jour dans la base de données.
Mais je ne sais pas comment.
L'objet movie n'est pas attaché à la base de données, alors comment le framework d'entité sait-il quelle ligne de la base de données doit être mise à jour?

Je suis sûr que la méthode Entry y est pour quelque chose, mais je ne sais pas vraiment ce que fait cette méthode. J'ai lu que cela fournit des informations mais je ne peux pas comprendre comment en changeant simplement le State d'une entrée, il devient attaché et suivi par le DBContext.

28
Idan Yadgar

Il attache simplement l'entité au dataContext. Sinon, vous devrez rechercher l'entité à l'aide de la clé primaire, puis modifier la valeur et l'enregistrer.

Si vous avez une entité dont vous savez qu'elle existe déjà dans la base de données mais à laquelle des modifications peuvent avoir été apportées, vous pouvez indiquer au contexte d'attacher l'entité et de définir son état sur Modifié. http://msdn.Microsoft.com/en-US/data/jj592676

25
Parv Sharma