我有一个这样的数据库结构:
create table Person (
ID bigint identity not null,
FirstName varchar(100),
LastName varchar(100),
-- etc... lot's of generic fields that apply to a person, e.g. phone, address
)
create table Teacher (
ID bigint identity not null,
PersonID bigint not null,
EmploymentDate date,
-- plus a bunch of other teacher-specific fields
)
create table Student (
ID bigint identity not null,
PersonID bigint not null,
EnrollmentDate date,
-- plus a bunch of student-specific fields
)
create table SystemUser (
ID bigint identity not null,
PersonID bigint not null,
UserName varchar(50) not null,
-- plus any user specific fields
)
Person
和所有其他字段之间的关系是 1 -> 0:1,并且每个“子类”Person
都有一个唯一的键PersonID
。ASystemUser
可能与 aTeacher
或 a是同一个人Student
;事实上,你可以想象有一个三者兼备的人。
现在,我想让 EF 实体表示和Teacher
,每个实体要么实际上继承自(一等奖),要么至少包含类中的字段,隐式映射到两个基础表。Student
SystemUser
Person
Person
我在网上找到了很多他们共享相同主键的例子,但没有一个他们不共享相同主键的例子,即PersonID
在派生表上映射到表ID
上Person
。
你是怎么做到的?