0

私は自分のデータベースに連絡先テーブルと電話テーブルを持っています。電話テーブルには、連絡先への電話を参照するキーを持つ列「ContactId」があります。

サーバーのキー オプションで、削除オプションを「カスケード」に設定しました。

コンテキストを使用して連絡先を削除しようとすると:

Dim contact As Contact 'The contact I want to delete.
Dim context As New Entities 'The ObjectContext.
context.DeleteObject(contact)
context.SaveChanges()

上記のステートメントは UpdateException をスローし、ContactId 列がその ID に設定されている Phone レコードがまだ Contact にあることを知らせます。

これで、手動で行うことができ、最初に関連するすべての電話を削除してから連絡先を削除できることがわかりましたが、より効率的な方法を探しています。これをすべて自動的に行う必要があります。

どんな提案や実践も歓迎します。

ありがとう。

4

1 に答える 1

0

最初に電話レコードを手動で削除する必要はありませんが、ロードする必要があります。レコードが読み込まれると、Entity Framework は何をすべきかを判断します。

また、このブログ投稿には、最初にオブジェクトを取得せずにエンティティ フレームワーク内のオブジェクトを削除する方法があります。関連オブジェクトへの参照を含むオブジェクトの削除の問題について説明します。ボンネットの下で何が起こっているのかを理解するのに役立つかもしれません。

于 2009-03-27T11:56:32.523 に答える