是否可以使用 POCO 和 EF 来处理以下情况?我想要一个车辆表,其中包含一些 bool 字段,例如 IsFast、IsVan、IsTruck,然后有一个车辆类,其中包含从车辆类继承的 FastVehicle、Van、Truck 类,没有自己的表,也没有有鉴别器场吗?
类似于:
public class Vehicle
{
public int Id {get; set;}
public bool IsFast {get; set;}
public bool IsTruck {get; set;}
public bool IsVan {get; set;}
}
public class FastVehicle : Vehicle
{
public FastVehicle(){
IsFast = true;
}
}
public class Van: Vehicle{
public Van(){
IsVan = true;
}
}
public class Truck : Vehicle
{
public Truck(){
IsTruck = true;
}
}
然后也许在我的 DbContext 中有类似的东西:
public virtual DbSet<Vehicle> Vehicles {get; set;}
public virtual DbSet<Van> Vans => (DbSet<Van>) Vehicles.Where(v => IsVan);
public virtual DbSet<Truck> Trucks => (DbSet<Truck>) Vehicles.Where(v => IsTruck);
public virtual DbSet<FastVehicle> FastVehicles => (DbSet<FastVehicle>) Vehicles.Where(v => IsFastVehicle);
这样的事情可能吗?或者由于某种原因这是一个坏主意?我将如何覆盖 OnModelCreating?
最佳答案
如果您没有每个类的鉴别器或表,则无法区分您的实体。
如果您的域模型中不需要 bool 属性,您实际上可以省略它们,因为 Entity Framework 默认使用“每个层次结构表”来映射继承。它会自动为您创建一个鉴别器列。 如果您将卡车对象添加到 DbSet 中,它将相应地填充鉴别器列。
关于c# - EntityFramework,没有鉴别器的继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021172/