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)
但是我得到了这个错误
无法对"表(联系人)"执行"创建","更新"或"删除"操作,因为它没有主键.
有人有什么建议吗?
您应该在桌面上有一个主键.这样可以更轻松地使用您的桌子.如果您没有主键,请尝试找到合适的候选键以设置为主键.如果您没有合适的列,那么您可能希望考虑添加自动递增代理键(在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)
再次注意这个命令.它将删除表中的所有行.