2012-07-02 54 views
1

我們遇到了一種方案,我們需要能夠將實體類型的名稱作爲esql語句結果中的值返回。如何在esql查詢中獲取實體類型的名稱

問題是,我們有一個通用的幫助程序,它構建並運行一個esql語句,以返回傳遞給MVC3應用程序的SelectList的結果。

文本列是從添加到模型屬性的屬性取得的表達式。例如,如果我們想要下拉列表將一個人名稱列爲Last,First,我們將添加一個屬性,如:'it。[LastName] +「,」+ it。[FirstName]' 其中產生像這樣的語句:

SELECT it.[Id] AS Id, it.[LastName] + ", " + it.[FirstName] AS Name 
FROM OfType([AuditedObject], [User]) AS it 

我們碰到的涉及使用TPT在EF4.3抽象類型的場景。我們需要使用這個輔助方法枚舉派生實體。該方法列舉和精細返回所有派生實體時,我們只是希望這樣的基本數據:

SELECT it.[Id] AS Id, it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

但是,我們需要一種方法來表示每個實體是什麼類型。像這樣的僞代碼:

SELECT it.[Id] AS Id, it.GetType().Name + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 

有沒有人有任何知識我可能會做到這一點?

回答

0

我忘了回到原處並更新此問題。我們最終選擇的解決方案並不十分優雅,但它爲我們提供了所需的全部功能。

我們最終在模型中添加了一個實體來表示具有鏈接它們的單向關聯的根對象的類型。然後,我們使用t4模板生成一個腳本,將這些類型填充到新表中,並添加業務邏輯以確保每次調用SaveChanges()時都設置它。

現在我們可以做到這一點:

SELECT it.[Id] AS Id, it.[EntityType].[Name] + " - " + it.[Name] AS Name 
FROM OfType([AuditedObject], [DatumObject]) AS it 
相關問題