gpt4 book ai didi

c# - EntityFramework,没有鉴别器的继承类

转载 作者:行者123 更新时间:2023-11-30 23:21:56 26 4
gpt4 key购买 nike

是否可以使用 POCO 和 EF 处理以下情况?我想要一个 Vehicles 表,有一些 bool 字段,如 IsFast、IsVan、IsTruck,然后有一个 Vehicles 类,有一个 FastVehicle、Van、Truck 类,它们继承自 Vehicles 类,没有自己的表,也没有有鉴别器字段?

类似于:

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 默认使用 Table per Hierarchy 来映射继承。它会自动为您创建一个鉴别器列。如果您将卡车对象添加到 DbSet,它将相应地填充鉴别器列。

http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph

关于c# - EntityFramework,没有鉴别器的继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com