1

VB.NET でテーブル内のすべてのレコードを削除する際に問題が発生しています。このコードを使用して、連絡先テーブルのすべてのレコードを削除しています

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

しかし、私はこのエラーが発生します

「テーブル (連絡先)」には主キーがないため、作成、更新、または削除操作を実行できません。

誰にも提案はありますか?

4

1 に答える 1

6

おそらく、テーブルに主キーが必要です。これにより、テーブルでの作業がはるかに簡単になります。主キーがない場合は、主キーとして設定する適切な候補キーを見つけてみてください。適切な列がない場合は、自動インクリメント サロゲート キー ( SQL Server ではIDと呼ばれます) を追加することを検討してください。主キーが既にある場合は、LINQ to SQL クラスが更新されていることを確認してください。

ただし、すべての値を削除したいだけの場合、この方法は遅すぎることに気付くかもしれません。別の方法は、以下を使用して SQL を直接実行することDataContext.ExecuteCommandです。

database.ExecuteCommand("DELETE Contacts");

これには、テーブルに主キーがある必要はありません。これにより、テーブル内のすべての行が取り返しのつかないほど削除されるため、注意してください。TRUNCATEコマンドはさらに高速ですが、これにはより高い権限が必要であることに注意してください。

database.ExecuteCommand("TRUNCATE TABLE Contacts");

繰り返しますが、このコマンドには注意してください。テーブルからすべての行が削除されます。

于 2010-05-06T17:47:06.817 に答える