2010-08-01 50 views
0

我想知道是否有辦法在運行時爲linq查詢提供表名。我感興趣的簡單的查詢像動態表名稱與Linq的實體?

select * from @someTableName 

我搜索了很多的答案,但無法在網絡上找到任何幫助。有MSDN上的一個帖子 - > link

戴夫·羅素建議做:

var p = ctx.GetType.GetProperty(oName).getValue(ctx,null) 

但除了獲取屬性與反思,我不知道如何制定出休息爲了能夠針對該屬性執行查詢,如:

from x in p select x; 
+0

IMO當你這樣做時,你會錯過LINQ的力量。爲什麼不使用普通的舊SQL? – Steven 2010-08-01 19:46:13

+0

我需要有一個IQueryable作爲結果,因爲它將在稍後需要。 – gixx 2010-08-01 22:49:39

回答

1

嘗試使用ExecuteStoreQuery方法。您執行SQL查詢並獲取ObjectResult。請注意,此方法僅在Entity Framework v4中可用。

+0

從問題來看,他是否真的想要表名,或者他是否真的想要實體名稱,這一點一點都不清楚。該方法將使用表名。對於實體名稱,使用ESQL或'System.Linq.Dynamic'。 – 2010-08-02 12:19:22

+0

我有各種不同的列表,他們都映射到實體模型。所以在運行時我選擇一些表名並從該特定表中檢索所有記錄。所以我在運行時都是表名,但我不知道如何使用它來檢索數據(需要爲jqGrid訂購IQueryable)。 ExecuteStoreQuery在編譯之前必須進行參數化,否則我在這裏做錯了什麼? – gixx 2010-08-02 15:55:59

+0

哦,實體名稱與數據存儲中的表名相同。 – gixx 2010-08-02 16:35:31