我在使用VB.NET删除表中的所有记录时遇到问题。我使用此代码删除联系人表VB.NET LINQ to SQL删除所有记录
For Each contact In database.Contacts
database.Contacts.DeleteOnSubmit(contact)
Next
所有记录,但我得到这个错误
无法执行创建,更新或删除上操作 “表(联系)”,因为 它没有主键。
任何人有任何建议吗?
我在使用VB.NET删除表中的所有记录时遇到问题。我使用此代码删除联系人表VB.NET LINQ to SQL删除所有记录
For Each contact In database.Contacts
database.Contacts.DeleteOnSubmit(contact)
Next
所有记录,但我得到这个错误
无法执行创建,更新或删除上操作 “表(联系)”,因为 它没有主键。
任何人有任何建议吗?
你应该在你的表上有一个主键。这将使您的桌子工作更容易。如果您没有主键,请尝试找到合适的候选键设置为主键。如果您没有合适的列,那么您可能希望考虑添加一个自动递增代理键(在SQL Server中称为identity)。如果您已经有主键,请确保您的LINQ to SQL类已更新。
但是,如果您只是想删除所有值,您可能会发现此方法太慢。另一种方法是直接使用DataContext.ExecuteCommand
执行SQL:
database.ExecuteCommand("DELETE Contacts");
这并不需要表中有一个主键。请注意,这将无法挽回地删除表中的所有行,所以要小心。更快的是TRUNCATE命令,但请注意,这需要更高的权限:
database.ExecuteCommand("TRUNCATE TABLE Contacts");
再次,要小心使用这个命令。它将删除表中的所有行。
感谢ExecuteCommand方法的工作。 – 2010-05-06 17:55:28
愚蠢的问题 - 你的表是否有主键? – JonH 2010-05-06 17:47:09
是的,id是主键。 – 2010-05-06 17:49:47