這是一個存儲過程EF6無法導入存儲過程
ALTER PROCEDURE [dbo].[StoredProc1]
(
@PageIndex INT = 1,
@RecordCount INT = 20,
@Gender NVARCHAR(10) = NULL
)
AS
BEGIN
SET NOCOUNT ON ;
WITH tmp1 AS
(
SELECT u.UserId, MIN(cl.ResultField) AS BestResult
FROM [Users] u
INNER JOIN Table1 tbl1 ON tbl1.UserId = u.UserId
WHERE (@Gender IS NULL OR u.Gender = @Gender)
GROUP BY u.UserID
ORDER BY BestResult
OFFSET @PageIndex * @RecordCount ROWS
FETCH NEXT @RecordCount ROWS ONLY
)
SELECT t.UserId, t.BestResult, AVG(cl.ResultField) AS Average
INTO #TmpAverage
FROM tmp1 t
INNER JOIN Table1 tbl1 ON tbl1.UserId = t.UserId
GROUP BY t.UserID, t.BestResult
ORDER BY Average
SELECT u.UserId, u.Name, u.Gender, t.BestResult, t.Average
FROM #tmpAverage t
INNER JOIN Users u on u.UserId = t.UserId
DROP TABLE #TmpAverage
END
當我使用EF6加載存儲的過程,然後轉到「編輯功能導入」對話框中,沒有列是一個簡化版本在那裏顯示。即使在我要求檢索列時,我也會收到SP未返回列的消息。當我從SMMS執行SP時,會得到預期的[UserId,Name,Gender,BestResult,Average]記錄列表。
任何想法如何調整存儲過程或EF6使其工作? 在此先感謝
@marc_s我是什麼談論的是「返回集合」對話框,即使點擊「獲取列信息」按鈕,它也會說存儲過程不返回任何列。如果我用一個簡單的選擇field1,field2,來自table1的field3 ...替換存儲的proc內容...那些會在該對話框上顯示。我會更新這個問題,以便更清楚。謝謝。 – Johnny
我認爲問題出現在TEMP表中。請參見[this](http://stackoverflow.com/a/7131344/1387612) – janisz
它並沒有很好地處理像'#temp'這樣的表。我只是暫時改變定義來選擇所需列名和數據類型的虛擬結果集。導入到EF然後用適當的定義替換。 –