1

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 <--> アクティビティ

更新後、新しいプロパティでのアクティビティの有無にかかわらず、すべての外部キー制約が取得され、保存が成功します。

  1. これは意図したものですか、それとも EF のバグですか?

  2. この問題を回避するにはどうすればよいですか?

  3. 継承を完全に放棄する必要がありますか?

4

1 に答える 1

2
  1. ビジュアル デザイナーではありませんが、貧弱です。
  2. 通常は、Entity XML を手動で単純に管理するのが最善です。
  3. 継承なしは、多くの状況でうまく機能しません。

基本的に、ビジュアル デザイナーでデータベースからの更新を使用しますが、デザイナーには癖があることを知っています。データベースからの更新を使用して、必要なものの基本をスタブしました。次に、エンティティ XML を自分で調べて、必要な方法でクリーンアップします。複雑な型は、デザイナーにとって苦痛です。複合型を使用する予定がある場合は、Entity XML を十分に学習する準備をしてください。

于 2010-05-25T03:01:50.953 に答える