2013-06-20 60 views
1

我有以下問題:我爲我的C#項目使用EntityFramework v5.0代碼第一種方法,其中用戶可以使用GUI從對象中選擇一些字段,例如:Customer Name with Name,Phone,城市屬性,用戶可以選擇任何。我想在運行時使用SqlQuery方法創建SQL查詢(http://msdn.microsoft.com/en-us/library/gg679117(v=vs.103).aspx),所以我需要在運行時創建所需的類型,我設法這樣做使用Reflection.Emit進行簡單查詢,如SELECT Name,City FROM Customers(我創建帶有名稱和城市字符串屬性的類型這裏)。但是,如何爲聚合函數創建屬性?例如EntityFramework聚合列名稱

SELECT Customers.Name, COUNT(Customers.City) 
FROM Customers 
GROUP BY Customers.Name 

我試圖創造他人的名爲「Count_Customer_City」屬性和幾十個,但我總是在結果中它得到0,所以它看起來像我正確的需要沒有名字,它就會用實際值來填充,但我無法弄清楚正確的名稱(或者有更好的通用方法)

+0

你爲什麼不使用,而不是使用LINQ方法來設置列名解決吧' SqlQuery'? –

+3

通過這樣做來擊敗EF的目的。在查詢後選擇你需要使用Linq和項目到你需要的類型,和/或構建業務域對象來支持你的輸出。 – Jay

+0

在用戶界面中獲取多少數據_once_並隱藏/顯示有什麼問題?最後,它可以更具響應性,因爲現在當用戶只想看到更多列時,必須再次獲取所有數據。它看起來不錯,但它過度設計。它甚至可能證明缺乏明確的用例和交互設計。 –

回答

0

使用context.Database.Connection.CreateCommand().CreateReader()方法,我可以明確地