2010-08-27 44 views
1

我有一個存儲過程,它使用一對錶並創建一個交叉表結果集。爲了創建交叉表結果集,我使用CASE語句,這些語句是根據表中的記錄動態生成的。從存儲過程創建具有動態的實體sql

是否有可能使用ADO.NET實體框架從此SP生成實體?因爲每次我嘗試Get Column Information爲特定的SP,它說The selected stored procedure returns no columns

任何幫助,將不勝感激。

回答

5

我的團隊成員最近遇到類似這樣的情況,存儲過程正在生成各種動態SQL並返回計算列,因此數據上下文不知道該怎麼做。我還沒有嘗試過自己呢,但是這是他聲稱工作的解決方案:

的解決方案是簡單地放線 「SET FMTONLY OFF;」入PROC。 這允許Data Context到 實際上會生成返回類。 這在這種情況下工作,只是因爲 proc除了查詢 數據外什麼都不做。

全部細節在這裏: http://tonesdotnetblog.wordpress.com/2010/06/02/solution-my-generated-linq-to-sql-stored-procedure-returns-an-int-when-it-should-return-a-table/

你只需要「SET FMTONLY OFF」在 的PROC足夠長的時間來產生 類。然後你可以評論它。

+0

謝謝!!奇蹟般有效。只希望我問過這個問題,這樣我就可以將你的問題標記爲答案。 – 2010-09-22 19:49:42

+1

David:只有當我們擁有sp中的動態查詢的條件邏輯並且調用代碼不需要任何輸入時,它才能工作。如果我們有基於輸入參數的條件,那麼即使在SET FMTONLY OFF之後,L2Sql如何獲得元數據。 – teenup 2011-01-14 13:01:06

+0

David:SET FMTONLY的+1,bcoz我不知道。 – teenup 2011-01-14 13:01:52