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

Dan*_*ris 1 vb.net linq-to-sql delete-row

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

        For Each contact In database.Contacts
             database.Contacts.DeleteOnSubmit(contact)
        Next
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

无法对"表(联系人)"执行"创建","更新"或"删除"操作,因为它没有主键.

有人有什么建议吗?

Mar*_*ers 5

您应该在桌面上有一个主键.这样可以更轻松地使用您的桌子.如果您没有主键,请尝试找到合适的候选键以设置为主键.如果您没有合适的列,那么您可能希望考虑添加自动递增代理键(在SQL Server中称为标识).如果您已有主键,请确保更新了LINQ to SQL类.

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

database.ExecuteCommand("DELETE Contacts");
Run Code Online (Sandbox Code Playgroud)

这不要求表具有主键.请注意,这将无可挽回地删除表中的所有行,因此请小心.TRUNCATE命令更快,但请注意,这需要更多权限:

database.ExecuteCommand("TRUNCATE TABLE Contacts");
Run Code Online (Sandbox Code Playgroud)

再次注意这个命令.它将删除表中的所有行.