EF 6プロジェクトをEFコア2.0に移行しようとしています。 私は、データベース構造内で何かを変更することは許されていないことを強調したいと思います - EF 6プロジェクトとまったく同じでなければなりません。EFコア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でそれを解決するために:
私は次のエラーを取得していますか?
私は同じ問題を抱えています... Entity Frameworkのコア2.0がこれをサポートしていないように思えます。 –