0
我在互联网上搜索过,发现了类似的帖子。但是,没有解决方案为我工作。所选的存储过程或函数没有返回列
我遇到了一个存储过程的问题。将它添加到Visual Studio中的项目中时,我收到以下消息:
所选存储过程或函数不返回任何列。
早些时候,我可以在我的程序添加SET FMTONLY OFF
(如回答here)解决问题。现在这不会改变任何事情;根据EF,它仍然不返回任何列。
我的存储过程是这样的:
ALTER PROCEDURE [dbo].[spImportData]
@someParameter
AS
BEGIN
SET NOCOUNT ON;
-- Some insertion
INSERT INTO dbo.SomeTable ([SomeField])
SELECT @someParameter
SELECT CAST(SCOPE_IDENTITY() AS BIGINT) AS ImportId
END
同样的结果使用临时表时:
CREATE TABLE #temp (ImportId BIGINT)
INSERT INTO #temp (ImportId)
SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT ImportId FROM #temp
DROP TABLE #temp
还是没有用表变量列:
DECLARE @importId BIGINT = SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
SELECT @importId
当执行该过程直接在SQL Server中,我正在获得所需的值。
我错过了什么?我认为SET FMTONLY OFF
会做的伎俩,但在这种情况下,没有任何变化,我的程序仍然“没有列返回”。
编辑1
我试着在他的评论暗示什么@NEER。我将SELECT
更改为SELECT 1 AS ImportId
。但我仍然收到同样的信息。
变化'SELECT CAST(SCOPE_IDENTITY()AS BIGINT)AS ImportId'为'SELECT 1 AS ImportId'然后更新您的实体。 – NEER
@NEER我试过了,但EF仍然不能识别任何列。 –
你也可以试试这个吗? '从OneOfYourTable'选择1作为Foo' – NEER