2012-04-25 53 views
0

我有以下情形:无法更新以波科代码生成项目的实体

以下2我的网页的全局变量:

MainContext db = new MainContext(); 
User user = new User(); 

的方法来填补这一被称为上的属性按钮更新:

private void FillProperties() 
     { 
      user.FirstName = txtFirstName.Text; 
      user.LastName = txtLastName.Text; 
      user.Email = txtEmail.Text; 
     } 

按钮更新我做了以下内容:

FillProperties(); 
user.ID = Request.QueryString("userid"); 
db.SaveChanges(); 

但记录尚未更新,我认为这是合乎逻辑的,因为用户变量是不相关的数据库对象,但IA,不能够做到这一点:

db.Users.AddObject(user); 

因为ADDOBJECT ISN” t在db属性中找到。

如何更新用户?

您的回答赞赏。

回答

1

如果您使用的是DbContext API只需使用

db.Entry(user).State = EntityState.Modified; 
+0

我试过,但它添加到数据库的新记录 – 2012-04-25 09:58:21

+1

@AliIssa更新我的答案 – Eranga 2012-04-25 10:07:08

+0

@Eranga我相信这个方案可能是畸形的(例如,缺少PK/AI,序列化方案和实际方案之间的差异) – 2012-04-25 10:26:00

0

你在哪里你的用户添加到数据库?
如果用户在数据库中存在,以更新它,你应该做的,例如:

user = db.Users.Where(x => x.ID == Request.QueryString("userid")).Single(); 
FillProperties(); 
db.SaveChanges();