Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架5.0 db.savechange不工作_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 实体框架5.0 db.savechange不工作

C# 实体框架5.0 db.savechange不工作,c#,asp.net,entity-framework,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).St

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

请查找以下代码

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 "";
}

这与实体框架完全无关,但更重要的是,您可能会使用localdb,而您的数据库并不是您认为的那样,并且每次按start时都会重新初始化(重置)为空


这个问题有几十种变体,人们不必费心检查它们的查找位置(然后意识到数据库文件有不同的路径)。问题是您保存了错误的实体(即
empObj
),而不是有更改的实体(即
employee
)。您的代码将
empObj
从数据库中取出,然后在不对其进行任何更改的情况下翻转并保存它。您需要按如下方式修改代码:

公共静态字符串UpdateEmployee(雇员)
{
使用(var db=new RandDEntities())
{
db.Employees.Attach(员工);
db.Entry(employee.State=EntityState.Modified;
db.SaveChanges();
}
返回“”;
}

尝试跟踪sql语句,您是否到达db?sql探查器不在我的系统中您如何知道它不工作?在我看来,您只是通过EmpID加载empObj,没有更改任何内容,然后保存它。没有更改属性,所以没有要保存的内容。谢谢,现在我更改了我的代码,如db.Entry(empObj).CurrentValues.SetValues(employee);但这段代码不支持并发。如何在我的更新实体中应用并发性我检查了很多BOLG,但我不支持它。我在3轮胎结构中的项目请帮助我是这个实体框架的新成员请再次帮助更新数据库,与实体框架无关。每次在调试器中启动程序时,都会从模板复制运行的数据库。试着阅读答案——这真的很有帮助。停止指责完全无关的技术。