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轮胎结构中的项目请帮助我是这个实体框架的新成员请再次帮助更新数据库,与实体框架无关。每次在调试器中启动程序时,都会从模板复制运行的数据库。试着阅读答案——这真的很有帮助。停止指责完全无关的技术。