2010-08-11 83 views
0

我试图插入一行到具有标识列和三个使用wpf中的实体框架的“普通”列的表中。 但是我得到了这个错误信息: 当IDENTITY_INSERT设置为OFF时,无法在表'MyTable'中为标识列插入显式值 这里是我的代码片段,试图添加到名称,姓氏,年龄和用户ID (身份)栏:插入到具有标识列的表

 var newuser = new User(); 
     newuser.SurName = surNameTextBox.Text; 
     newuser.Name = nameTextBox.Text; 
     newuser.Age = Int32.Parse(ageTextBox.Text); 
     context.AddToUsers(newuser); 
     context.SaveChanges(); 

任何人都可以帮助我解决这个问题吗?

+0

你想设置一个用户ID值吗? (不是在示例代码中,但也许在其他地方?) – Tobiasopdenbrouw 2010-08-11 12:45:32

+0

我不这么认为,但我会再次检查它。在行动我想知道如何增加用户ID ..我有自己增加它或SQL为我做? – cemregoksu 2010-08-11 12:49:18

+0

我无法理解你的意思,现在不知道你是否明白我想做什么=) 我只是想分配代码段中的给定列,我希望sql自己设置用户ID。 – cemregoksu 2010-08-11 12:56:36

回答

1

标识列确实更新自己 - 这是他们的目的。

如果这是您用来更新用户的唯一代码,那么我会查看(或发布)DataContext中的AddToUsers方法。

+0

我找不到任何我分配用户标识的地方,但在调试时,我意识到userID似乎分配为0,传递给AddObject方法的用户对象。但我不知道为什么以及如何... – cemregoksu 2010-08-11 13:23:40

+0

那么,如果用户ID是某种类型的int,并且从来没有分配给它,它将为0. – 2010-08-11 13:27:47

+0

是否是SQL的问题?我应该为此做些什么?我该如何解决它? – cemregoksu 2010-08-11 13:29:59

2

我不熟悉实体框架,但对于好奇这是对标识列使插入的MS SQL命令:

SET IDENTITY_INSERT tablename ON 

我Wonko到理智的同意,问题是几乎可以肯定地在AddToUsers方法中。

+0

+1信息和+1赞同我。 :) – 2010-08-12 02:46:33

相关问题