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看看我的問題的結尾。 –

相關問題