繁体   English   中英

EF4和多个抽象级别

[英]EF4 and multiple abstract levels

我需要对EF4和从数据库创建的TPH模型使用继承。
我创建了一个新的projet来测试简单类。 有我的班级模型:

在此处输入图片说明

在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):
有所有映射详细信息: 在此处输入图片说明在此处输入图片说明在此处输入图片说明在此处输入图片说明在此处输入图片说明在此处输入图片说明

怎么了 ?

谢谢

EF4不能很好地处理这些问题。 您可以使用区分符来实现,但是这些类必须是非抽象的。 您必须使用另一种方法,例如代码分析或测试,以确保基类不会被除实体框架以外的任何实例所实例化。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM