存储过程获取列信息不返回任何内容?

时间:2013-03-13 12:18:32

标签: entity-framework

我正在使用带有存储过程的实体框架,我在其中动态生成查询并执行该查询。存储的proc查询如下所示:

Begin
  DECLARE @Query nvarchar(MAX)
  SET @Query = 'SELECT e.id, e.name, e.add, e.phno from employee'
  EXEC sp_executesql @Query
End

在上面的sql代码中,您可以看到我正在执行'@Query'变量,并且该变量值可以动态更改。

我可以在edmx文件中添加我的存储过程。然后我去模型浏览器说Add function import并尝试Get column information它没有显示任何内容。但是当我在服务器上执行我的存储过程时,它会返回带有值的所有列。为什么我没有在模型浏览器上获取列信息?

3 个答案:

答案 0 :(得分:1)

模型浏览器不运行存储过程,然后从结果中收集列信息 - 它试图使用sys表从基础过程定义中获取列信息。

这个程序,因为它是动态的,不会有基础定义,因此不能像这样导入EDMX。

答案 1 :(得分:1)

暂时将存储过程更改为

SELECT TOP 1 e.id, e.name, e.add, e.phno from employee /* ... rest of your proc commented out */

然后将其添加到EF并创建函数import(它将看到列)。

然后将proc更改回上面的方式。

答案 2 :(得分:0)

尝试在SET NOCOUNT ON ....之后添加BEGIN,以抑制可能导致其“混淆”的消息