ti-enxame.com

O que o DBContext.Entry faz?

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

Essa ação recebe um modelo de filme e o atualiza no banco de dados.
Mas não consigo descobrir como.
O objeto movie não está anexado ao banco de dados, então como a estrutura da entidade sabe qual linha no banco de dados deve ser atualizada?

Estou certo de que o método Entry tem algo a ver com isso, mas não sei realmente o que esse método faz. Eu li que ele fornece informações, mas não consigo entender como, apenas alterando o State de uma entrada, ele é anexado e rastreado pelo DBContext.

28
Idan Yadgar

Apenas anexa a entidade ao dataContext. Caso contrário, você terá que procurar a entidade usando a chave primária, editar o valor e salvá-lo.

Se você possui uma entidade que você sabe que já existe no banco de dados, mas cujas alterações podem ter sido feitas, é possível dizer ao contexto para anexar a entidade e definir seu estado como Modificado. http://msdn.Microsoft.com/en-US/data/jj592676

25
Parv Sharma