私は、別のクラスが関係を持つ基本クラスを継承するクラスを持っています。EFコード最初の抽象的な関係ですか?
例:
- 基本クラス:動物
- サブクラス1:犬
- サブクラス2:一対多テーブル関連猫
- :ワクチン接種
- 犬を持つことができ複数のワクチン接種。これはリスト<ワクチン接種>として実装されています。
- 猫は複数の予防接種を受けることができます。
- ワクチン接種記録には1匹の動物しか付随できません。
- ワクチン接種は、それが犬または猫に関連しているかどうかわかりません。 (犬や猫は、非衝突GUIDを使用しています。)
何の動物のテーブルがありません。動物は抽象クラスです。しかし、ワクチン接種は犬についてではなく、動物についてしか知りません。私は私のクラスライブラリを分割して、Animal and Vaccinationがコアライブラリにあり、Dogがコアライブラリを参照する別のライブラリにあるように分割しています。
Entity Framework Code Firstを使用している場合、Vaccinationsテーブルに余分な列が追加されます。Dog_ID、犬クラスのリスト<ワクチン接種>明示的宣言が推論を作成しています。そのため、この列はワクチン接種記録を犬にマッピングします。この追加の列を複数の種類のAnimalで共有したいという点を除いて、これは問題ありません。たとえば、Dog_IDとCat_IDを持っているのではなく、DogまたはCatのいずれかに参加できるAnimal_IDが必要です。
動物は抽象的でDBテーブルはないので、私はたぶん流暢なステートメントやプロパティ/属性の宣言でこれを達成できますか?
"リレーションシップは、データベースに直接リレーションシップを作成した場合と同じ規則に従う必要があります。技術的には、1つの列を仮想外部キーとしてSQL Serverの複数のテーブルに関連付けることができます。私はEF CFでこれを行うことができることを期待していました。 –
技術的には、複数の関係で1つの列を関連付けることができますが、休暇にはDog、CatなどのAnimalIdが関連付けられており、一度「親」テーブルがすべて同じIDで記録されている必要があります=犬、猫に関連しています... –
私が答えで提供したTPTマッピングでリンクを確認してください。そして、動物はまだ抽象的である可能性があります。 –