2010-04-26 66 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();