【发布时间】:2010-09-20 23:22:49
【问题描述】:
我正在使用 Visual Studio 2010 和实体框架 (EF)。我正在使用存储过程从数据库中检索数据并通过实体模型绑定到 Gridview。当我在 SQL 查询中执行此存储过程时,它会返回动态生成的列。即,执行(@PivotTableSQL)。 @PivotTableSQL 包含动态生成的选择语句。下面是我的存储过程代码。
但是,要创建复杂类型,从实体模型浏览器窗口 -> 添加函数导入窗口 -> 复杂 -> 获取列信息,“所选存储过程不返回任何列。”显示信息。请给我一个解决方案,如何添加函数导入和获取列信息(创建复杂类型)或任何其他替代解决方案的详细信息。这阻止了我的进一步发展。提前致谢。
alter PROCEDURE spGetQuestGrid
(
@QID as int
)
AS
BEGIN
SET NOCOUNT OFF
SET FMTONLY OFF
Declare @optId varchar(10)
DECLARE @PivotColumnHeaders VARCHAR(MAX)
DECLARE @PivotTableSQL NVARCHAR(MAX)
set @optId = (select DISTINCT Optid from QuestOptions where QID = @QID)
SELECT @PivotColumnHeaders = COALESCE(@PivotColumnHeaders + ', [' + cast(Caption as varchar) + ']' ,
'[' + cast(Caption as varchar)+ ']')
FROM OptionsDetail where OptId = @optId
SET @PivotTableSQL = 'select * from (select Caption,Optid from OptionsDetail ) as datatable
PIVOT
( min(Optid) FOR Caption IN ( '+ @PivotColumnHeaders + '))as Colltable'
Execute (@PivotTableSQL)
END
【问题讨论】: