所以我有一个绑定到实体的视图(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()时,它无论如何都不会保留更改。
我还尝试在此操作中创建新上下文,再次查找实体并保存更改。再没有运气了。
为什么实体框架不会将此视为更改并保存?
答案 0 :(得分:2)
您是否尝试删除specold = spec;
?
答案 1 :(得分:0)
所以我重写了代码并发现IE 9没有将请求发送回服务器(它是使用Ajax.ActionLink编写的)。所以它正在保存,但是当我去检索相同的记录时,它是在没有进入服务器并获取更新记录的情况下提取旧值。