8

我需要将继承与 EF4 和从 DB 创建的 TPH 模型一起使用。
我创建了一个新项目来测试简单类。有我的班级模型:

在此处输入图像描述

SQL SERVER 2008 中有我的表:

VEHICLE 
  ID : int PK
  Owner : varchar(50)
  Consumption : float
  FirstCirculationDate : date
  Type : varchar(50)
  Discriminator : varchar(10)

我在 EDMX 的 Discriminator 字段中添加了一个条件来区分 Scooter、Car、Motorbike 和 Bike 实体。

机动车辆和车辆是抽象的。

但是当我编译时,出现了这个错误:

错误 3032:从第 78、85 行开始映射片段时出现问题:EntityTypes EF4InheritanceModel.Scooter、EF4InheritanceModel.Motorbike、EF4InheritanceModel.Car、EF4InheritanceModel.Bike 被映射到表 Vehicle 中的相同行。映射条件可用于区分这些类型映射到的行。

编辑:
致拉迪斯拉夫:
我尝试并错误更改为我所有实体的错误:

错误 3034:从第 72、86 行开始映射片段时出现问题:实体映射到 > 同一个表中的不同行。确保这两个映射片段不会将具有重叠键的两组实体映射到两组不同的行。

致 Henk(与 Ladislay 建议):
有所有映射细节: 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

怎么了 ?

谢谢

4

1 回答 1

1

EF4 不能很好地处理这些。您可以使用鉴别器来做到这一点,但类必须是非抽象的。您必须使用另一种方法,如代码分析或测试,以确保基类永远不会被实体框架以外的任何东西实例化。

或者,您可以升级到 EF6。我不确定它是否会更好地支持它,但它肯定可以更好地处理模型层次结构,从而允许更好地支持模型的更好的数据库模式。

于 2015-01-09T04:06:35.660 回答