我有这三种模式:
public class Equipment
{
public int ID { get; set; }
public string title { get; set; }
}
[Table("Vessels")]
public class Vessel:Equipment
{
public string Size { get; set; }
}
[Table("Tubes")]
public class Tube : Equipment
{
public string Pressure{ get; set; }
}
我想显示一个包含2列标题和类型的设备列表。
例如:
Title Type
------ -------
101-1 vessel
101-2 vessel
102-3 tube
我不知道如何在Equipments中制作一个鉴别器列来显示每种设备的类型。
EDITED
如果我在装备实体中有一个鉴别器,如:
public class Equipment
{
public int ID { get; set; }
public string title { get; set; }
public string type{ get; set; } //as discriminator
}
我可以在控制器或存储库中获取查询,如下所示:
var equipments=from e in db.Equipments
select e;
答案 0 :(得分:1)
您无法根据EF映射制作鉴别器列 - TPT继承不支持它,因为鉴别器是子表。您可以尝试使用以下内容:
public abstract class Equipment
{
public int ID { get; set; }
public string title { get; set; }
[NotMapped]
public abstract string Type { get; }
}
并覆盖子类型中的Type
属性以获取正确的名称。您将无法在Linq-to-Entities查询中使用该属性,因为它未映射。