0

私のデータベースに連絡先テーブルと電話テーブルがあり、電話テーブルに連絡先に電話を参照するキーがある "ContactId"列があります。ADO.NET Entity Frameworkのヘルプが必要です

サーバのキーオプションでは、削除オプションを 'Cascade'に設定しました。今

私は、コンテキストを使用して連絡先を削除しよう:

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

上記の文は私が連絡先はまだそのContactId COLそのIDに設定されている携帯電話のレコードを持っていることを知らせるUpdateExceptionをスローします。

私はこれを手動で行い、最初にすべての関連する電話を削除してから連絡先を削除できることを知っていますが、より効率的な方法を探しています。

どのような提案や慣行も歓迎されます。

ありがとうございました。

答えて

0

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

また、このブログの投稿はa method for deleting objects in the entity framework without retrieving them firstです。関連オブジェクトへの参照を伴うオブジェクトの削除の問題について説明します。それはあなたがボンネットの下で起こっていることの周りにあなたの頭を得るのを助けるかもしれません。

+0

こんにちはクレイグ! あなたが提供したリンクはとても役に立ちました! しかし、それは私の質問に答えなかったし、少なくとも私はそれを理解していなかった。 私は連絡先+電話を読み込んでいます。私が削除すると、私はまだ例外を取得します。 簡単な例を投稿してください。 ありがとうございます! – Shimmy

+0

それは本当に簡単です:contract.Phones.Load()。それでも問題が解決しない場合は、正しくないことがあります。マッピングが正しいことを確認します。 –

関連する問題