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