こんにちは私はEF 4自己追跡エンティティを使用しています。私は次のように3つのテーブル(アンケート、セクション、ページ)を持っています。削除時のEF4循環参照の問題
Questionnaire
Id
Title
WhenClosedShowPageId
Section
Id
QuestionnaireId
Page
Id
SectionId
EFモデルでは、アンケートにはセクションがあり、セクションにはページがあります。 WhenClosedShowPageIdは、アンケートが閉じられたときに表示するページを参照するnull可能なintです。すべての参照には、参照整合性を維持するための関連付けがあります。
問題は、すべてのエンティティを削除済みとしてマークして保存しようとしたときに発生します。データを取得したときにWhenClosedShowPageIdがnullだった場合、削除は正常に機能します。 WhenClosedShowPageIdが値に設定されている場合、EFは削除する順序を決めることができません。これは理解できる。しかし、WhenClosedShowPageIdをnullに設定し、エンティティを削除済みとしてマークして保存すると、同じことが起こります。データベース上でWhenClosedShowPageIdをnullに設定してから、エンティティを削除するために、最初に更新ステートメントを生成するとEFが期待していました。
この問題を回避するには、2つの独立した保存を自分自身で行うことが唯一の方法です。まず、WhenClosedShowPageIdをnullに設定し、2番目にエンティティを削除します。これは重く階層化されたアプリですが、私はこれのために特別なケースを作成する必要はありません。
これを回避する手段はありますか?
ダレン