4

我正在使用带有存储过程的实体框架,在其中我动态生成查询并执行该查询。存储的 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它没有显示任何内容。但是当我在服务器上执行我的存储过程时,它会返回所有带有值的列。为什么我没有在模型浏览器中获取列信息?

4

3 回答 3

1

模型浏览器没有运行存储过程然后从其结果中收集列信息——它试图使用sys表从底层过程定义中获取列信息。

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

于 2013-03-13T12:22:21.820 回答
1

暂时将您的存储过程更改为

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

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

然后将proc改回你上面的样子。

于 2013-06-13T23:49:01.653 回答
0

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

于 2013-03-13T12:25:04.550 回答