2013-07-09 22 views
0

下面的代码是我用的。 SQL表名:tbl_Student
列:student_id(标识),名,姓,位置,电子邮件。值在LINQ/C#中为列标识插入错误

当我提交下面的代码。以下错误将会发生。我对这个概念很陌生。我不知道如何管理标识栏。请帮助。

无法执行创建,更新或删除 “表(tbl_Student)”操作,因为它在C#中没有主键

 tbl_Student ts = new tbl_Student(); 
     ts.Firstname = textBox1.Text; 
     ts.Lastname = textBox2.Text; 
     ts.Location = textBox3.Text; 
     ts.Email = textBox4.Text; 
     db.tbl_Students.InsertOnSubmit(ts); 
     db.SubmitChanges(); 
+0

在SSMS中右键单击该表并选择设计,彰显'student_id'并单击小图标,看起来像一个关键。保存并重新生成模型。 – asawyer

+0

我已经将主键添加到该colomn。但仍然返回错误 – Hari

+1

保存,*重新生成模型。* – asawyer

回答

0

你在数据库中的主键表通过设计器生成Linq to SQL类时的表吗?只是为了确保,通过设计人员重新生成这些类。

+0

我忘了在表格中修改后重新生成模型。无论如何,非常感谢你 – Hari

+0

upvote我请! – Tarik

1

按规定:

Can't perform Create, Update or Delete operations on a table because it has no primary key in c#

你要么需要尝试(通过ExecuteCommand)执行自己的命令,或者更好 - 修改你的表有一个关键,这是强烈推荐。

注意:正如我在下面的注释中指定的那样,添加密钥后,需要重新生成模型。自己执行查询

例子:

db.ExecuteQuery<Studnet>("INSERT INTO tbl_Student VALUES(Firstname ,LastName, Location, Email)"); 
+0

我使用executecommand还可以在插入查询之前和之后设置开/关标识属性,但它返回相同的错误。 – Hari

+0

所以你已经添加了一个密钥,问题依然存在?你是否重新生成模型? –

+0

错误已恢复。在表格中修改后,我忘了重新生成模型。无论如何,非常感谢你。 – Hari

相关问题