2013-01-16 57 views
0

我目前正在使用EF和MVC構建自定義報告生成器。我的查詢構建器構建SQL,然後我可以使用dbSet.SqlQuery()對數據庫運行此查詢。自定義查詢/報告返回類型

但是,用戶將能夠從不同的表中選擇他們希望返回的字段。

因此,我不確定哪個「類型」將結果返回爲。如果只選擇「客戶」表中的字段,我可以輕鬆地返回「客戶」列表。

我希望這是有道理的。任何人都可以在這裏給我任何指針嗎?

+1

您是否考慮過使用'dynamic'對象? –

回答

0

嗯...不知道你會找到一個完美的解決方案。問題是你需要在運行時定義列。最初我以爲你可以嘗試使用匿名類型,但是你不能在方法簽名中使用匿名類型。如丹尼斯所建議的動態對象上的動態對象Here is an article,但是將它與你的想法聯繫在一起就在我的頭上。長話短說我不認爲有一個簡單的答案。

下面是通過查看this MSDN Artical關於如何對您的DBContext執行通用查詢創建的示例。您可能可以使用它,但是您將無法保留您的數據類型(可能這與您的報告無關?):

using (var context = new BloggingContext()) 
{ 
    //Here blogNames will be a List<string[]> 
    var blogNames = context.Database.SqlQuery<string[]>(
         "SELECT Name, YourProperty FROM dbo.Blogs").ToList(); 
}