EF4 の継承されたエンティティ (TPT) で奇妙な現象が発生しているように見えます。
私は3つのエンティティを持っています。1.資産 2.財産 3.活動
Property は Asset の派生型です。プロパティには多くのアクティビティがあります (多対多)
これを EDMX でモデル化すると、データベースに新しいプロパティを挿入しようとするまで、すべて問題ないように見えます。プロパティにアクティビティが含まれていない場合は機能しますが、新しいプロパティにいくつかの新しいアクティビティを追加すると、すべてが崩壊します。
Web をクロールして 2 日間いじった後、EF ストア (SSDL) でエンティティ間の制約の一部が更新プロセス中に取得されていないことに気付きました。
プロパティとアクティビティをリンクする Property_Activity テーブルには、FK_Property_Activity_Activity という制約が 1 つしか表示されませんが、FK_Property_Activity_Property がありませんでした。
データベースの関係を次のように切り替えたとき、これが Entity Framework の異常であることはわかっていました。
Asset <--> Asset_Activity <--> アクティビティ
更新後、新しいプロパティでのアクティビティの有無にかかわらず、すべての外部キー制約が取得され、保存が成功します。
これは意図したものですか、それとも EF のバグですか?
この問題を回避するにはどうすればよいですか?
継承を完全に放棄する必要がありますか?