我想在 EF 中实现以下模型作为 TPT 设计。
我的代码如下:
基础模型
public abstract class Product
{
public int Id { get; set; }
public DateTime ProductionDate { get; set; }
}
车型
public abstract class Car : Product
{
public string ChassisNumber { get; set; }
public string DriverName { get; set; }
}
[Table("TeslaCars")]
public class TeslaCar : Car
{
public string Battery { get; set; }
public int Temperature { get; set; }
}
[Table("PorscheCars")]
public class PorscheCar : Car
{
public int FuelTank { get; set; }
}
摩托车型号
public abstract class Motorcycle : Product
{
public string RiderName { get; set; }
public bool IsRacing { get; set; }
}
[Table("CrossMotorcycles")]
public class CrossMotorcycle : Motorcycle
{
public int MaximumJump { get; set; }
}
[Table("KipsMotorcycles")]
public class KipsMotorcycle : Motorcycle
{
public long MaximumSpeed { get; set; }
}
但问题是,创建表后,仅进行 TPT 设计的最后一步,并创建 TPH 设计之上的层。
我应该如何修改代码以遵循各级表的 TPT 设计? 在最终输出中,我需要制作如下表格:
最佳答案
我终于得到答案了!
在本例中,我需要将汽车型号和摩托车型号分别放在不同的表中,但上面的代码是默认使用TPH设计的。
所以我们必须这样更改代码:
基础模型
public abstract class Product
{
public int Id { get; set; }
public DateTime ProductionDate { get; set; }
}
车型
[Table("Cars")]
public abstract class Car : Product
{
public string ChassisNumber { get; set; }
public string DriverName { get; set; }
}
[Table("TeslaCars")]
public class TeslaCar : Car
{
public string Battery { get; set; }
public int Temperature { get; set; }
}
[Table("PorscheCars")]
public class PorscheCar : Car
{
public int FuelTank { get; set; }
}
摩托车型号
[Table("Motorcycles")]
public abstract class Motorcycle : Product
{
public string RiderName { get; set; }
public bool IsRacing { get; set; }
}
[Table("CrossMotorcycles")]
public class CrossMotorcycle : Motorcycle
{
public int MaximumJump { get; set; }
}
[Table("KipsMotorcycles")]
public class KipsMotorcycle : Motorcycle
{
public long MaximumSpeed { get; set; }
}
关于c# - 在 Entity Framework 中使用TPT设计的多级继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59986638/