我尝试制作以下抽象类:
public abstract class Car
{
public int Id { get; set; }
public abstract CarType CarType { get; }
}
public class SmallCar : Car
{
public override CarType CarType => CarType.SmallCar;
}
在OnModelCreating
中,我这样做:
modelBuilder.Entity<Car>()
.HasDiscriminator<CarType>("CarType")
.HasValue<SmallCar>( CarType.SmallCar)
modelBuilder.Entity<SmallCar>().HasBaseType<Car>();
但是出现以下错误:
找不到实体类型为'Car'的属性'CarType'的后备字段,并且该属性没有设置器。
我在这里做什么错了?
答案 0 :(得分:0)
您没有为EF设置值提供一种方法。
向CarType
添加一个私有的setter或提供一个设置它的受保护的构造函数。
或者...如果您不希望将该属性保留到数据存储中,请告诉EF忽略它:
modelBuilder.Entity<Car>.Ignore(x => x.CarType);