gpt4 book ai didi

c# - Entity Framework v4 - 从链接服务器(打开查询)返回的简单存储过程选择语句 -1

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:20 25 4
gpt4 key购买 nike

在 SQL Server 中,我创建了一个存储过程,它使用 Open Query 触发一个简单的选择语句(带 SET NOCOUNT OFF)以从链接服务器查询数据。在 SQL Server 中查询此数据时,会返回正确的结果,例如:

SELECT * FROM OPENQUERY(SERVER, ''SELECT * FROM db.table WHERE field = ' + '''' + '''' + @var+ '''' + ''''')'

我现在有一个使用 Entity Framework v4 来访问数据的 C# WinForms 应用程序,我想在代码中访问这个存储过程。

我做了通常的“从数据库更新模型”并添加了存储过程,然后选择添加函数导入(例如称为 getData)。然后我注意到在单击“获取列信息”后,我收到了以下消息:

'The selected stored procedure returns no columns'

此时我点了确定然后写了一些简单的代码来访问SP(如下):

using(var context = new MyContext())
{
var result = context.getData('paramdata');
}

单步执行代码时,结果设置为“-1”。在阅读了一些内容后,有人建议在我所做的存储过程中将 NOCOUNT 设置为 OFF,但没有任何区别。

我不确定为什么这适用于 SQL Server 中的查询而不适用于 Entity Framework?

有什么方法可以让它发挥作用吗?

提前致谢。

最佳答案

因为您使用的是 OpenQuery,所以 SQL 服务器不知道该列列表。

尝试创建一个表变量,将 openquery 的结果插入其中,然后从表变量中进行选择。

declare @t table(ID int, value nvarchar(50))
insert @t (ID, value)
select Id,Value FROM OPENQUERY(SERVER, 'SELECT * FROM db.table')

select ID, Value from @t

关于c# - Entity Framework v4 - 从链接服务器(打开查询)返回的简单存储过程选择语句 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12564327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com