2

嗨,我正在尝试从数据库中更新一条记录,但由于某种原因,该记录没有更新。我正在使用 ADO.NET 实体框架 4.0

public void updateCredits(string username)
 {
     myDBEntities Entity = new myDBEntities();
     User u = Entity.Users.SingleOrDefault(u => u.username == username)
     u.firstname = "name";
     u.credits = 11.5;
     Entity.SaveChanges();
 }

我尝试重新启动 VS 甚至 SQL Server,但没有运气。难道我做错了什么?

4

1 回答 1

1

更改跟踪似乎存在问题。您可以尝试手动将User实体标记为已更改,如下所示:

public void updateCredits(string username)
 {
     myDBEntities Entity = new myDBEntities();
     User u = Entity.Users.SingleOrDefault(u => u.username == username)
     u.firstname = "name";
     u.credits = 11.5;
     Entity.Entry(u).State = EntityState.Modified;  //<-- manually indicate the entity was changed
     Entity.SaveChanges();
 }

如果上面的代码有效,那么很有可能 ChangeTracking 以某种方式被禁用。

于 2013-04-13T18:35:10.837 回答