gpt4 book ai didi

asp.net - EF 函数导入无法识别 StoredProc 返回的列

转载 作者:行者123 更新时间:2023-12-01 08:34:05 26 4
gpt4 key购买 nike

Possible Duplicate:
EF4 - The selected stored procedure returns no columns

我有一个存储过程,它填充 #temp 表,对其记录执行操作,然后选择记录。

问题是,当我尝试创建函数导入并单击 [获取列信息] 时,结果 Pane 显示消息“选定的存储过程或函数不返回任何列”。

现在,我知道它确实返回了列,因为如果我直接从数据库运行它,我会得到预期的结果集。

存储过程可以概括如下:

SELECT P.PersonID, P.Surname, P.NickName, P.DateofBirth
INTO #SeriesCompleted
FROM
Table1 T (NOLOCK)
INNER JOIN
Table2 P (NOLOCK) ON T.PID = P.PID
;
Select r.PID, SUM(rt.Distance) 'Distance'
INTO #Distance
FROM
#SeriesCompleted sc
inner join table3 rsr (NOLOCK) on rsr.SeriesId = sc.SeriesId
inner join table4 r (NOLOCK) on r.PID = sc.PID
inner join table5 rt (NOLOCK) on rt.RouteID = r.RouteID
GROUP BY r.PID;

UPDATE #SeriesCompleted
SET Distance = d.Distance
FROM #SeriesCompleted sc
INNER JOIN #Distance d on d.PID = sc.PPID;

--Here is where the result is returned.
SELECT distinct sc.PersonID, sc.NickName, sc.Surname, sc.DateofBirth, sc.NumberFinished, sc.Distance
FROM #SeriesCompleted SC

Here's a (partly censored) example of the output when running the stored proc directly

最佳答案

在疯狂搜索之后,我得到了答案:EF4 - The selected stored procedure returns no columns

EF 无法从使用动态查询或临时表的存储过程中获取元数据。解决方案是手动创建复杂的返回类型或放置

SET FMTONLY OFF

在我的存储过程定义中。当然,第二个选项的危险在于,存储过程将在 Visual Studio 执行元数据调用时执行,因此理想情况下,只有在存储过程没有更改任何内容时才使用它。

更新:另一种方法是确保存储过程确实有效。您可以做的另一件事是创建一个虚拟存储过程,该过程返回您想要的列,绑定(bind)到它,然后执行实际逻辑。

关于asp.net - EF 函数导入无法识别 StoredProc 返回的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com