2010-05-06 129 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

相关问题