2013-03-13 31 views
4

我正在使用存儲過程的實體框架,其中我動態生成查詢並執行該查詢。該存儲過程查詢看起來像:存儲過程獲取列信息不會返回任何內容?

Begin 
    DECLARE @Query nvarchar(MAX) 
    SET @Query = 'SELECT e.id, e.name, e.add, e.phno from employee' 
    EXEC sp_executesql @Query 
End 

在上面的SQL代碼,你可以看到,我執行'@Query'變量,而變量值可以動態改變。

我可以在我的edmx文件中添加我的存儲過程。然後我去模型瀏覽器,並說Add function import,並嘗試Get column information它不顯示任何東西。但是當我在服務器上執行我的存儲過程時,它會返回所有包含值的列。爲什麼我沒有在模型瀏覽器上獲取列信息?

+0

可能的重複[爲什麼不能實體框架看到我的存儲過程的列信息?](https://stackoverflow.com/questions/5996887/why-cant-entity-framework-see-my-stored-procedures-列信息) – Matt 2017-07-17 14:59:20

回答

0

嘗試增加SET NOCOUNT ONBEGIN ....這supresses可能會導致它被「迷惑」

+0

謝謝..我已經添加設置nocount,但它不會工作... – swan 2013-03-13 12:27:06

1

模型瀏覽器未運行存儲過程,然後從其結果中收集列信息 - 它試圖使用sys表從基礎過程定義中獲取列信息。

此過程因爲是動態的,所以不會有基礎定義,因此不會像這樣可導入到EDMX中。

+0

謝謝..有沒有其他方式來獲取模型bowser列信息? – swan 2013-03-13 12:24:42

+0

對不起,但我不知道有什麼方法。 – 2013-03-13 12:27:34

+0

好的謝謝............ – swan 2013-03-13 12:28:36

1

臨時更改存儲過程來

SELECT TOP 1 e.id, e.name, e.add, e.phno from employee /* ... rest of your proc commented out */ 

然後把它添加到EF和建立消息函數導入(它會看到列)。

然後把proc改回到上面的樣子。