2010-05-06 168 views
1

我在使用VB.NET刪除表中的所有記錄時遇到問題。我使用此代碼刪除聯繫人表VB.NET LINQ to SQL刪除所有記錄

 For Each contact In database.Contacts 
      database.Contacts.DeleteOnSubmit(contact) 
     Next 

所有記錄,但我得到這個錯誤

無法執行創建,更新或刪除上操作 「表(聯繫)」,因爲 它沒有主鍵。

任何人有任何建議嗎?

+0

愚蠢的問題 - 你的表是否有主鍵? – JonH 2010-05-06 17:47:09

+0

是的,id是主鍵。 – 2010-05-06 17:49:47

回答

5

你應該在你的表上有一個主鍵。這將使您的桌子工作更容易。如果您沒有主鍵,請嘗試找到合適的候選鍵設置爲主鍵。如果您沒有合適的列,那麼您可能希望考慮添加一個自動遞增代理鍵(在SQL Server中稱爲identity)。如果您已經有主鍵,請確保您的LINQ to SQL類已更新。

但是,如果您只是想刪除所有值,您可能會發現此方法太慢。另一種方法是直接使用DataContext.ExecuteCommand執行SQL:

database.ExecuteCommand("DELETE Contacts"); 

這並不需要表中有一個主鍵。請注意,這將無法挽回地刪除表中的所有行,所以要小心。更快的是TRUNCATE命令,但請注意,這需要更高的權限:

database.ExecuteCommand("TRUNCATE TABLE Contacts"); 

再次,要小心使用這個命令。它將刪除表中的所有行。

+0

感謝ExecuteCommand方法的工作。 – 2010-05-06 17:55:28