Присоединенный объект не получает обновления с новыми значениями при вызове SaveChanges - PullRequest
0 голосов
/ 23 августа 2010

Что-то не так с этим кодом? Моя сущность не обновляется.

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();
}

1 Ответ

1 голос
/ 23 августа 2010

Просмотрите документацию Entity Framework, озаглавленную «Работа с объектами» , в частности раздел Присоединение и отсоединение объектов .

В этом случае вы звоните AttachTo, который переводит объект в состояние Unchanged.

Затем вы вызываете ApplyCurrentValues, который копирует все значения в объекте поверх его собственных значений;любые значения , имеющие другое значение , помечаются как измененные.(Обратите внимание, что поскольку каждое значение просто копируется поверх самого себя, нет из них имеют другое значение, поэтому сущность остается в состоянии Unchanged).

Наконец, вы вызываете SaveChanges.Поскольку объект находится в состоянии Unchanged, делать нечего.

Ссылки на документацию MSDN в начале этого ответа содержат информацию о правильном способе сделать это (обратите внимание, что добавление сущность использует решение, отличное от , обновляющее сущность).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...