我在使用VB.NET刪除表中的所有記錄時遇到問題。我使用此代碼刪除聯繫人表VB.NET LINQ to SQL刪除所有記錄
For Each contact In database.Contacts
database.Contacts.DeleteOnSubmit(contact)
Next
所有記錄,但我得到這個錯誤
無法執行創建,更新或刪除上操作 「表(聯繫)」,因爲 它沒有主鍵。
任何人有任何建議嗎?
我在使用VB.NET刪除表中的所有記錄時遇到問題。我使用此代碼刪除聯繫人表VB.NET LINQ to SQL刪除所有記錄
For Each contact In database.Contacts
database.Contacts.DeleteOnSubmit(contact)
Next
所有記錄,但我得到這個錯誤
無法執行創建,更新或刪除上操作 「表(聯繫)」,因爲 它沒有主鍵。
任何人有任何建議嗎?
你應該在你的表上有一個主鍵。這將使您的桌子工作更容易。如果您沒有主鍵,請嘗試找到合適的候選鍵設置爲主鍵。如果您沒有合適的列,那麼您可能希望考慮添加一個自動遞增代理鍵(在SQL Server中稱爲identity)。如果您已經有主鍵,請確保您的LINQ to SQL類已更新。
但是,如果您只是想刪除所有值,您可能會發現此方法太慢。另一種方法是直接使用DataContext.ExecuteCommand
執行SQL:
database.ExecuteCommand("DELETE Contacts");
這並不需要表中有一個主鍵。請注意,這將無法挽回地刪除表中的所有行,所以要小心。更快的是TRUNCATE命令,但請注意,這需要更高的權限:
database.ExecuteCommand("TRUNCATE TABLE Contacts");
再次,要小心使用這個命令。它將刪除表中的所有行。
感謝ExecuteCommand方法的工作。 – 2010-05-06 17:55:28
愚蠢的問題 - 你的表是否有主鍵? – JonH 2010-05-06 17:47:09
是的,id是主鍵。 – 2010-05-06 17:49:47