0

BD ファースト アプローチを使用して、継承マッピングと Discriminator プロパティを定義することは可能ですか。

EDMX ダイアグラムを使用して、テーブルからオブジェクトへのマッピングを定義します。すべてのドメイン エンティティを含む DomainEntity テーブルがあり、それらは DomainEntityTypes テーブルにマップされた TypeID によって識別されます。

私が完全に制御できる場合、次のようにマッピングを設計します。

  1. 抽象クラス DomainEntity を定義する
  2. 具体的なエンティティを作成するために DomainEntity 呼び出しから継承する
  3. TypeID に対して継承マッピング アノテーションと IsDiscriminator アノテーションを使用する
  4. 列挙型を使用して、可能なすべてのタイプを定義します(その時点から、タイプテーブルは何のためにあるのだろうか)

これらすべてを何らかの方法で EDMX ファイルで定義できますか? または、自動生成の使用をやめて、手動マッピングを続行する必要がありますか?

4

1 に答える 1

2

継承マッピングの「自動生成」はありません。最初にデータベースを使用するときは、モデルにテーブルをロードするだけで、リレーションを持つエンティティが作成されます。ここで、継承が必要な場合は、デザイナからのマッピングを変更する必要があります。デザイナでTPH継承を設定する方法について説明します

  1. 継承階層の基本エンティティを抽象として定義できます。これは、図のエンティティのプロパティです。
  2. 使用するすべてのタイプの新しいエンティティを継承し、マッピングでその識別子の値を正しく設定する必要があります。
  3. 実際の注釈はありません。継承はToolBoxで使用可能な構成であり、ディスクリミネーターはマッピングで定義された条件です。
  4. 列挙型はありません。弁別子列は、正しいタイプへのマッピングを定義するためにすでに使用されているため、エンティティで使用することもできません(各列は、マッピングで1回しか使用できないため、プロパティまたは弁別子のいずれかに使用できますが、両方とも)。列挙型ではなく、継承階層を記述するためのエンティティの有限セットがあります。
于 2012-09-02T08:36:50.293 に答える