我正在尝试将EF 6项目迁移到EF Core 2.0。 我想强调我不允许在数据库结构中更改任何内容 - 必须与EF 6项目完全相同。在EF Core 2.0中使用OwnsOne方法映射属性
我有foloowing实体:
abstract class Vehicle { ... }
abstract class Car : Vehicle
{
public Dimension Dimensions { get; set; }
}
class Audi : Car { ... }
class Mazda : Car { ... }
class Dimension
{
public double Width { get; set; }
public double Height { get; set; }
}
表映射如下:
public VehicleMap(EntityTypeBuilder<Vehicle> entityBuilder)
{
entityBuilder.ToTable("Vehicles");
entityBuilder.HasKey(_ => _.Id);
entityBuilder.HasDiscriminator<string>("Type").HasValue<Truck>(nameof(Truck));
}
public CarMap(EntityTypeBuilder<Car> entityBuilder)
{
entityBuilder.HasDiscriminator<string>("Type")
.HasValue<Mazda>(nameof(Mazda))
.HasValue<Audi>(nameof(Audi));
**entityBuilder.OwnsOne(_ => _.Dimensions);**
}
我的问题是,在Car
抽象类定义约Dimensions
财产。我想使用OwnsOne
方法将其映射到同一个表中定义的所有类属性。
,我发现了以下错误:
Cannot use table 'Vehicles' for entity type 'Car.Dimensions#Dimension' since it has a relationship to a derived entity type 'Car'. Either point the relationship to the base type 'Vehicle' or map 'Car.Dimensions#Dimension' to a different table.
不知道如何解决它在EF核心2.0吗?
我有同样的问题...好像实体框架的核心2.0不支持这一点。 –