#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). Итак, это сохранялось, но когда я пошел извлекать ту же запись, она извлекала старые значения без перехода на сервер и получения обновленной записи.