这是我面临的问题的简化版本。基本上,我有一个现有的数据库,代码优先的实体框架,并有几个表,我看到一个ObjectId和ObjectType字段。根据ObjectType,表可以连接到不共享层次结构的其他几个不同表中的一个。
例如,给定以下数据库表:
CREATE TABLE BarCode
(
Id int NOT NULL PRIMARY KEY,
ObjectType int NOT NULL,
ObjectId int NOT NULL,
BarCodeValue varchar(20) NOT NULL,
)
CREATE TABLE Person
(
Id int NOT NULL PRIMARY KEY,
Name varchar(20),
)
CREATE TABLE Package
(
Id int NOT NULL PRIMARY KEY,
Name varchar(20),
)
我可能会在BarCode表中看到ObjectType为1的行,它们对应于Person记录,或者ObjectType为2的行,它们对应于Package记录。
在Entity Framework中,如何设置映射,以便Person实体可以拥有BarCode,而Package实体可以拥有条形码?我没有看到Map()方法允许您指定除外键字段以外的任何字段的位置。就像我说的那样,这些对象之间确实没有层次结构,它们共享一个共同的属性。有点像用界面装饰一个类而不是从某个东西继承它。