我想在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; }
}