2010-08-22 1 views
0

Y at-il un problème avec ce code? Mon entité n'est pas mise à jour.L'entité attachée ne reçoit pas de mise à jour avec de nouvelles valeurs lorsque SaveChanges est appelée

public ActionResult UpdateNota(string notas) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     RegistroEntities registroEntities = new RegistroEntities(); 
     Nota nota = JsonConvert.DeserializeObject<Nota>(notas); 
     registroEntities.AttachTo("Notas",nota); 
     registroEntities.ApplyCurrentValues("Notas", nota); 
     registroEntities.SaveChanges(SaveOptions.DetectChangesBeforeSave); 
     return Json(new {success=true}); 
    } 
    return View(); 
} 

Répondre

1

Examiner les Entity Framework documentation entitled Working with Objects, en particulier la section sur Attaching and Detaching Objects.

Dans ce cas, vous appelez AttachTo, ce qui place l'entité dans l'état Unchanged.

Puis vous appelez ApplyCurrentValues, qui copie toutes les valeurs dans l'entité sur ses propres valeurs; les valeurs ayant une valeur différente sont marquées comme modifiées. (Notez que puisque chaque valeur est simplement copiée sur elle-même, aucun d'entre eux ont une valeur différente, donc l'entité reste dans l'état Unchanged). Pour finir, vous appelez le SaveChanges. Puisque l'entité est dans un état Unchanged, il n'y a rien à faire.

Les liens de documentation MSDN au début de cette réponse contiennent des informations sur la bonne façon de le faire (notez que l'ajout l'entité utilise une autre solution que la mise à jour l'entité).

Questions connexes