Sql server 更新过程“存储过程不返回列”时实体框架错误
我有一个带有动态列的存储过程。当我在实体框架中更新存储过程时,我得到了一个错误 存储过程不返回任何列 我在google中搜索,我被添加到我的存储过程中,但我仍然没有得到Entity Framework中的列 我的问题是这样的:Sql server 更新过程“存储过程不返回列”时实体框架错误,sql-server,entity-framework,Sql Server,Entity Framework,我有一个带有动态列的存储过程。当我在实体框架中更新存储过程时,我得到了一个错误 存储过程不返回任何列 我在google中搜索,我被添加到我的存储过程中,但我仍然没有得到Entity Framework中的列 我的问题是这样的: DECLARE @cols VARCHAR(MAX) ;WITH CTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY #ResourceUtilization.[DAY] ORDER BY #ResourceUtilizat
DECLARE @cols VARCHAR(MAX)
;WITH CTE AS (
SELECT ROW_NUMBER() OVER(PARTITION BY #ResourceUtilization.[DAY]
ORDER BY #ResourceUtilization.[DAY]) AS rowNbr,
#ResourceUtilization.[DAY]
FROM #ResourceUtilization )
SELECT @cols=STUFF ( ( SELECT ',' +QUOTENAME([DAY])
FROM CTE
WHERE CTE.rowNbr=1 FOR XML PATH('') ) ,1,1,'')
DECLARE @query NVARCHAR(4000)=
N'SELECT
DEPT_NAME,
EMP_NAME,
DESIGNATION,' + @cols +'
FROM
(
SELECT
RU.DEPT_NAME,
RU.EMP_NAME,
RU.DESIGNATION,
RU.[DAY],
(
CAST(RU.FIRST_SHIFT AS VARCHAR(10))+'',''+
CAST(RU.SECOND_SHIFT AS VARCHAR(10))+'',''+
CAST(RU.THIRD_SHIFT AS VARCHAR(10))+'',''+
CAST(RU.GENERAL_SHIFT AS VARCHAR(10))
) AS SHIFT
FROM
#ResourceUtilization RU
) AS p
PIVOT
(
MAX(SHIFT) FOR [DAY] IN('+@cols+')
) AS pvt'
EXECUTE(@query)
请任何人帮助我。您计划如何将@cols传递给您的查询?@cols的声明在哪里?声明@cols VARCHARMAX;将CTE设置为SELECT ROW_NUMBER OVERPARTITION BY ResourceUtilization.[DAY]按ResourceUtilization排序。[DAY]设置为rowNbr,ResourceUtilization.[DAY]从ResourceUtilization选择@cols=STUFF SELECT','+QUOTENAME[DAY]在CTE中,CTE.rowNbr=1表示XML路径1,1,您可以在执行和分析查询之前打印查询。当每次执行响应的形状都发生变化时,Entity Framework应该如何映射此存储过程的结果?这是一个非常糟糕的设计-不要做这样的事情!一个存储过程应该做一件事,只做一件事,并且应该返回定义良好的固定数据形状。您好,您说的是对的,但是如何创建一个过程。请告诉我。