c# – EF6无法导入存储过程
发布时间:2020-12-15 21:59:47 所属栏目:百科 来源:网络整理
导读:这是存储过程的简化版本 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
这是存储过程的简化版本
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.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使其工作? 解决方法
感谢上面的评论,答案是不幸的是,EF6无法很好地处理存储过程中的TMP表.
一种方法是: 2)更改存储过程以使用与预期结果匹配的完全相同的列名称返回假结果 3)将存储过程导入EF6 4)双击功能导入/存储过程名称 5)在“编辑函数导入”对话框中,检索“列”并创建与假列匹配的“新建复杂类型” 6)CTRL保存以生成所有C#代码 7)通过删除伪结果集重新更新存储过程,并使用Temp表取消注释代码. 那应该做的. 附:特别感谢那些把我指向正确位置的助手! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |