我试图了解 EF4 中的继承映射。
我的数据库有两个具有以下结构的表:
人员类别表:
- CategoryID (int) (身份) (PK)
- 类别类型 (nvarchar(50))
人表
- PersonID (int) (身份) (PK)
- CategoryID(来自 PersonCategory 表的 FK)
- 名称 (nvarchar(50))
- 说明 (nvarchar(max))
PersonCategory 表有四个条目,每个条目代表一个类别 - Student、CourseInstructor、Staff 和 Advisor。
通过在线阅读文章,我认为Table Per Hierarchy将是适合这种情况的模型。所以在 EF4 中,我创建了四个实体(Student、CourseInstructor、Staff 和 Advisor),每个实体都继承自 Person 表。然后,我将它们中的每一个映射到 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 或 EntitySets。
Table Per Hierarchy 是否适合这种情况?如果不是,那么我应该如何在 EF4 中处理这种情况?