1

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

        For Each contact In database.Contacts
             database.Contacts.DeleteOnSubmit(contact)
        Next

但我得到这个错误

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

有人有什么建议吗?

4

1 回答 1

6

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

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

database.ExecuteCommand("DELETE Contacts");

这不需要表具有主键。请注意,这将不可挽回地删除表中的所有行,所以要小心。更快的是TRUNCATE命令,但请注意,这需要更大的权限:

database.ExecuteCommand("TRUNCATE TABLE Contacts");

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

于 2010-05-06T17:47:06.817 回答