0

我有这三种模式:的EntityFramework 4.3 codefirst使用TPT和鉴别

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 

我不知道如何在设备鉴别栏,显示各设备的类型。

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; 
+1

最后一个查询如何依赖于鉴别器? –

+0

非常感谢,我想我知道我的错误在哪里。我想像TPH一样自动填充Type(鉴别器),但是现在明白我必须在每个我将从容器和管中获得的实例中设置代码值。非常感谢@LadislavMrnka –

回答

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查询中使用该属性,因为它未映射。

+0

感谢您的回复,我已阅读您在这[问题]的评论(http://stackoverflow.com/questions/7142214/can-i-specify-a-discriminator-column-with-a- table-per-type-mapping),两者都很好,很有帮助,但我不明白如何从dbcontext中取出该查询。我会编辑我的问题PLZ看看我的问题的结尾。 –

相关问题