EF核心-抽象基类-为什么会出现错误“找不到后备字段,并且该属性没有设置器”?

时间:2019-12-02 07:47:01

标签: ef-core-2.2

我尝试制作以下抽象类:

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'的后备字段,并且该属性没有设置器。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您没有为EF设置值提供一种方法。

CarType添加一个私有的setter或提供一个设置它的受保护的构造函数。

或者...如果您不希望将该属性保留到数据存储中,请告诉EF忽略它:

modelBuilder.Entity<Car>.Ignore(x => x.CarType);