ASP.NET MVC Controller中的编辑操作无法更新对Entity Framework实体的更改

时间:2011-04-26 16:47:04

标签: 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()时,它无论如何都不会保留更改。

我还尝试在此操作中创建新上下文,再次查找实体并保存更改。再没有运气了。

为什么实体框架不会将此视为更改并保存?

2 个答案:

答案 0 :(得分:2)

您是否尝试删除specold = spec;

答案 1 :(得分:0)

所以我重写了代码并发现IE 9没有将请求发送回服务器(它是使用Ajax.ActionLink编写的)。所以它正在保存,但是当我去检索相同的记录时,它是在没有进入服务器并获取更新记录的情况下提取旧值。