Действие редактирования в ASP.NET Контроллеру MVC не удается обновить изменения в Entity Framework entity

#entity-framework

#entity-framework

Вопрос:

Итак, у меня есть представление, привязанное к сущности (tblOutreachSpecialist). Когда это представление отправляется обратно на сервер, оно отправляет обратно экземпляр этой сущности (опять же, сущность tblOutreachSpecialist) с записанными изменениями.

Однако у меня возникли трудности с успешным сохранением этих изменений.

У меня есть контекст объекта с областью действия по всему контроллеру.

[AcceptVerbs(HttpVerbs.Post)]
public RedirectToRouteResult eOS(DAL.tblOutreachSpecialist spec)
{

         int id = spec.OSID;            
        tblOutreachSpecialist specold = ent.tblOutreachSpecialists.Where(c => c.OSID == id).FirstOrDefault();            
        specold = spec;
        specold.FirstName = spec.FirstName;
        specold.LastName = spec.LastName;
        specold.AreaCode = spec.AreaCode;
        specold.PhoneNumber = spec.PhoneNumber;
        specold.PhoneExtension = spec.PhoneExtension;
        specold.WirelessNumber = spec.WirelessNumber;
        specold.Fax = spec.Fax;
        specold.TTY = spec.TTY;
        specold.Email = spec.Email;
        specold.Mobile = spec.Mobile;
        specold.EmployeeStartDate = spec.EmployeeStartDate;
        specold.OSTargetGroup = spec.OSTargetGroup;
        specold.Location = spec.Location;
        specold.Username = spec.Username;
        specold.Domain = spec.Domain;
        specold.DateStamp = spec.DateStamp;
        ent.SaveChanges();
        return RedirectToAction("gOses");
    }
  

Я попытался просто приравнять их (specold = spec;); это не сработало. В результате я попытался явно отобразить свойства.

Когда я вызываю SaveChanges(), изменения в любом случае не сохраняются.

Я также попытался создать новый контекст в этом действии, снова найти объект и сохранить изменения. Снова не повезло.

Почему Entity Framework не увидит это как изменение и не сохранит его?

Ответ №1:

Вы пытались удалить specold = spec; ?

Ответ №2:

Итак, я переработал код и обнаружил, что IE 9 не отправляет запрос обратно на сервер (он написан с использованием Ajax.ActionLink). Итак, это сохранялось, но когда я пошел извлекать ту же запись, она извлекала старые значения без перехода на сервер и получения обновленной записи.