VB.NET LINQ to SQL删除所有记录

VB.NET LINQ to SQL删除所有记录,vb.net,linq-to-sql,delete-row,Vb.net,Linq To Sql,Delete Row,我在使用VB.NET删除表中的所有记录时遇到问题。我正在使用此代码删除联系人表中的所有记录 For Each contact In database.Contacts database.Contacts.DeleteOnSubmit(contact) Next 但是我得到了这个错误 无法执行创建、更新或删除 “表(联系人)”上的操作,因为 它没有主键 有人有什么建议吗?您的表上应该有一个主键。这将使使用您的桌子更容易。如果没有主键,请尝

我在使用VB.NET删除表中的所有记录时遇到问题。我正在使用此代码删除联系人表中的所有记录

        For Each contact In database.Contacts
             database.Contacts.DeleteOnSubmit(contact)
        Next
但是我得到了这个错误

无法执行创建、更新或删除 “表(联系人)”上的操作,因为 它没有主键


有人有什么建议吗?

您的表上应该有一个主键。这将使使用您的桌子更容易。如果没有主键,请尝试查找合适的候选键以设置为主键。如果您没有合适的列,那么您可能希望考虑添加自动递增代理键(称为IN SQL Server中的AN)。如果已经有主键,请确保更新了LINQ到SQL类

但是,如果您只想删除所有值,您可能会发现此方法太慢。另一种方法是使用以下命令直接执行SQL:

这并不要求表具有主键。请注意,这将不可避免地删除表中的所有行,因此请小心。命令执行得更快,但请注意,这需要更大的权限:

database.ExecuteCommand("TRUNCATE TABLE Contacts");

同样,使用此命令时要小心。它将删除表中的所有行。

您的表上可能应该有一个主键。这将使使用您的桌子更容易。如果没有主键,请尝试查找合适的候选键以设置为主键。如果您没有合适的列,那么您可能希望考虑添加自动递增代理键(称为IN SQL Server中的AN)。如果已经有主键,请确保更新了LINQ到SQL类

但是,如果您只想删除所有值,您可能会发现此方法太慢。另一种方法是使用以下命令直接执行SQL:

这并不要求表具有主键。请注意,这将不可避免地删除表中的所有行,因此请小心。命令执行得更快,但请注意,这需要更大的权限:

database.ExecuteCommand("TRUNCATE TABLE Contacts");

同样,使用此命令时要小心。它将删除表中的所有行。

愚蠢的问题-表是否有主键?愚蠢的问题-表是否有主键?