我正在尝试理解EF4中的继承映射。
我的数据库有两个表,其结构如下:
PersonCategory表:
- CategoryID(int)(identity)(PK) - CategoryType(nvarchar(50))
Person表:
- PersonID(int)(identity)(PK) - CategoryID(来自PersonCategory表的FK) - Name(nvarchar(50)) - Description(nvarchar(max))
PersonCategory表有四个条目,分别代表以下类别-学生、课程导师、工作人员和顾问。
阅读了在线文章后,我认为Table Per Hierarchy是适合这种情况的模型。因此,在EF4中,我创建了四个实体(Student、CourseInstructor、Staff和Advisor),每个实体都继承自Person表。然后,我将它们中的每一个映射到Person表,并添加了一个条件(例如,对于Student实体,CategoryID = 1,对于Staff实体,CategoryID = 2)来区分其他实体。我还从Person表中删除了CategoryID属性,并将其变成了抽象类。但是,由于我删除了Person表中的CategoryId属性,所以出现了以下错误。
我的数据库有两个表,其结构如下:
PersonCategory表:
- CategoryID(int)(identity)(PK) - CategoryType(nvarchar(50))
Person表:
- PersonID(int)(identity)(PK) - CategoryID(来自PersonCategory表的FK) - Name(nvarchar(50)) - Description(nvarchar(max))
PersonCategory表有四个条目,分别代表以下类别-学生、课程导师、工作人员和顾问。
阅读了在线文章后,我认为Table Per Hierarchy是适合这种情况的模型。因此,在EF4中,我创建了四个实体(Student、CourseInstructor、Staff和Advisor),每个实体都继承自Person表。然后,我将它们中的每一个映射到Person表,并添加了一个条件(例如,对于Student实体,CategoryID = 1,对于Staff实体,CategoryID = 2)来区分其他实体。我还从Person表中删除了CategoryID属性,并将其变成了抽象类。但是,由于我删除了Person表中的CategoryId属性,所以出现了以下错误。
错误3015:从表Person(CategoryID)到表PersonCategory(CategoryID)的外键约束FK_Person_PersonCategory::映射片段起始处存在问题:映射不足:外键必须映射到在概念侧参与外键关联的某些AssociationSet或EntitySets。
Table Per Hierarchy是适合这种情况的模型吗?如果不是,那么我应该如何处理EF4中的这种情况?