【发布时间】:2011-05-08 01:25:12
【问题描述】:
我正在尝试了解 EF4 中的继承映射。
我的数据库有两个表,结构如下:
PersonCategory 表:
- CategoryID (int) (identity) (PK)
- CategoryType (nvarchar(50))
人员表
- PersonID (int) (身份) (PK)
- CategoryID(来自 PersonCategory 表的 FK)
- 名称 (nvarchar(50))
- 说明(nvarchar(max))
PersonCategory 表有四个条目,每个条目代表一个类别 - Student、CourseInstructor、Staff 和 Advisor。
通过在线阅读articles,我认为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 或 EntitySet。
Table Per Hierarchy 是否适合这种情况?如果不是,那么我应该如何在 EF4 中处理这种情况?
【问题讨论】:
标签: .net inheritance entity-framework-4 hierarchy table-per-hierarchy