c# – EF6无法导入存储过程

c# – EF6无法导入存储过程,第1张

概述这是存储过程的简化版本 ALTER PROCEDURE [dbo].[StoredProc1]( @PageIndex INT = 1, @RecordCount INT = 20, @Gender NVARCHAR(10) = NULL)AS BEGIN SET NOCOUNT ON ;WITH tmp1 AS( SELECT u.UserI 这是存储过程的简化版本

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 AverageINTO #TmpAverageFROM tmp1 t   INNER JOIN table1 tbl1 ON tbl1.UserID = t.UserIDGROUP BY t.UserID,t.BestResult ORDER BY AverageSELECT u.UserID,u.name,u.Gender,t.Average  FROM #tmpAverage t    INNER JOIN Users u on u.UserID = t.UserIDDROP table #TmpAverageEND

当我使用EF6加载存储过程,然后转到“编辑函数导入”对话框时,不会显示任何列.即使在我要求检索列之后,我也收到了SP不返回列的消息.当我从SMMS执行SP时,我得到了预期的[UserID,name,Gender,BestResult,Average]记录列表.

任何想法如何调整存储过程或EF6使其工作?
提前致谢

解决方法 感谢上面的评论,答案是不幸的是,EF6无法很好地处理存储过程中的TMP表.

一种方法是:
1)注释存储过程中的所有临时表调用.

2)更改存储过程以使用与预期结果匹配的完全相同的列名称返回假结果

3)将存储过程导入EF6

4)双击功能导入/存储过程名称

5)在“编辑函数导入”对话框中,检索“列”并创建与假列匹配的“新建复杂类型”

6)CTRL保存以生成所有C#代码

7)通过删除伪结果集重新更新存储过程,并使用Temp表取消注释代码.

那应该做的.

附:特别感谢那些把我指向正确位置的助手!

总结

以上是内存溢出为你收集整理的c# – EF6无法导入存储过程全部内容,希望文章能够帮你解决c# – EF6无法导入存储过程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存