实体框架5.0 db.savechange无法正常工作

时间:2014-06-05 11:59:00

标签: c# asp.net entity-framework

当我尝试在更新功能中更新我的条目时,它已成功执行但数据库未更新。

请找到以下代码

public static string UpdateEmployee(Employee employee)
{
    using (var db = new RandDEntities())
    {
         var empObj = db.Employees.First(x => x.EmpID == employee.EmpID);
         db.Entry(empObj).State = EntityState.Modified;
         db.SaveChanges();
    }
    return "";
}

2 个答案:

答案 0 :(得分:2)

问题是您正在保存错误的实体(即empObj)而不是具有更改的实体(即employee)。您的代码将empObj拉出数据库,然后转身并保存,而不对其进行任何更改。您需要按如下方式修改代码:

public static string UpdateEmployee(Employee employee)
{
    using (var db = new RandDEntities())
    {
         db.Employees.Attach(employee);
         db.Entry(employee).State = EntityState.Modified;
         db.SaveChanges();
    }
    return "";
}

答案 1 :(得分:0)

这与Entity Framework完全无关,但更多的是因为您可能使用localdb并且您的数据库不在您认为的位置,并且每次按下start时重新初始化(重置)为空。

这个问题,在几十个变种中,被人们问到并且没有打扰检查它们的外观(然后意识到数据库文件有不同的路径)。