2010-04-26 67 views
3

我有一个LINQ查询在表中插入数据。但它不起作用。我看到互联网上的一些例子试图这样做,但似乎没有工作。使用Linq插入数据

表名:登录有3列用户标识,用户名和密码。我将userid设置为数据库中的自动增量。所以我必须每次只插入用户名和密码。这是我的代码。

linq_testDataContext db = new linq_testDataContext(); 
login insert = new login(); 
      insert.username = userNameString; 
      insert.Password = pwdString; 
      db.logins.Attach(insert);// tried to use Add but my intellisence is not showing me Add.I saw attach but dosent seems to work. 
      db.SubmitChanges(); 
+0

如何不工作? – SLaks 2010-04-26 17:36:00

+0

它说“主键找不到”,但我已经在我的数据库中声明了主键,即自动递增的用户ID – Ani 2010-04-26 17:41:41

+0

您还需要在DBML上设置主键字段 – Nate 2010-04-26 17:44:45

回答

3

Attach()是错误的方法,您需要调用InsertOnSubmit()来让Linq-To-Sql为您生成插入语句。 Attach()用于分布式场景,其中您的实体尚未通过用于提交更改的相同数据上下文来检索。

linq_testDataContext db = new linq_testDataContext(); 
login insert = new login(); 
      insert.username = userNameString; 
      insert.Password = pwdString; 
      db.logins.InsertOnSubmit(insert);// tried to use Add but my intellisence is not showing me Add.I saw attach but dosent seems to work. 
      db.SubmitChanges(); 
+0

@Johannes感谢您的帮助,但我试过做它会抛出一个异常说“没有找到主键”,但我的数据库中有userid(autoincrementing)作为主键。 – Ani 2010-04-26 17:39:20

+0

这是否也正确设置在您的dblm映射? – 2010-04-26 17:58:10

+0

我重新创建了dbml,现在它不会抛出任何错误,但数据也不会插入到表中。 – Ani 2010-04-26 17:59:46

4

http://www.codeproject.com/KB/linq/LINQToSQLBaseCRUDClass.aspx

linq_testDataContext db = new linq_testDataContext(); 
login insert = new login(); 
      insert.username = userNameString; 
      insert.Password = pwdString; 
      db.logins. InsertOnSubmit(insert); 
      db.SubmitChanges(); 

看看如果你安装 - 。如果你想插入任何值,尝试用InsertOnSubmit(应该连接到特定的对象上下文。但它在数据库中不会体现对象)并做 SubmitChanges()将其保存在数据库中

+0

@anish Thanx,它抛出另一个异常,转到linq_test.designer.cs,说“成员'userid''不正确的AutoSync规范”,在此之前,我更改我的dbml以将userid设置为主键。 谢谢 – Ani 2010-04-26 17:51:46

+0

尝试构建dbml并尝试.. 如果您只生成dbml,它将创建该类。否则它也会引发错误... – anishMarokey 2010-04-26 17:55:20

+0

@ Anish是的,我刚刚尝试重新构建dbml。现在它不会抛出任何异常或错误,但数据也不会插入tabel中。 谢谢 Aniruddh – Ani 2010-04-26 17:57:02

2

将员工详细信息保存到数据库中的方法。

Insert, Update & Delete in LINQ C#

 Employee objEmp = new Employee(); 
     // fields to be insert 
     objEmp.EmployeeName = "John"; 
     objEmp.EmployeeAge = 21; 
     objEmp.EmployeeDesc = "Designer"; 
     objEmp.EmployeeAddress = "Northampton";     
     objDataContext.Employees.InsertOnSubmit(objEmp); 
     // executes the commands to implement the changes to the database 
     objDataContext.SubmitChanges();