EF4 の継承マッピングを理解しようとしています。
私のデータベースには、次の構造を持つ 2 つのテーブルがあります。
PersonCategory テーブル:
- CategoryID (int) (ID) (PK)
- カテゴリ タイプ (nvarchar(50))
人物表
- PersonID (int) (ID) (PK)
- CategoryID (PersonCategory テーブルの外部キー)
- 名前 (nvarchar(50))
- 説明 (nvarchar(max))
PersonCategory テーブルには、それぞれカテゴリを表す 4 つのエントリがあります - Student、CourseInstructor、Staff、および Advisor。
オンラインで記事を読んだ結果、 Table Per Hierarchyがこのシナリオに適したモデルになると思いました。そのため、EF4 では、それぞれ Person テーブルから継承する 4 つのエンティティ (Student、CourseInstructor、Staff、および Advisor) を作成しました。次に、それぞれを Person テーブルにマップし、それぞれに条件を追加して (たとえば、Student エンティティの場合は CategoryID = 1、Staff エンティティの場合は CategoryID = 2)、他と区別しました。また、Person テーブルから CategoryID プロパティを削除し、抽象クラスにしました。しかし、Person テーブルから CategoryId プロパティを削除したため、次のエラーが発生します。
エラー 3015: 行 101、108、114、120、126、133 で始まるフラグメントのマッピングの問題: テーブル Person (CategoryID) からテーブル PersonCategory (CategoryID) への外部キー制約 'FK_Person_PersonCategory':: マッピングが不十分です: 外部キーをマップする必要があります概念側で外部キー関連付けに参加している一部の AssociationSet または EntitySet に。
階層ごとのテーブルは、このシナリオに適したモデルですか? そうでない場合、EF4 でこのシナリオにどのようにアプローチすればよいですか?