在 SQL Server 中,我创建了一个存储过程,它使用 Open Query 触发一个简单的选择语句(SET NOCOUNT OFF)来从链接服务器查询数据。在 SQL Server 中查询此数据时,会返回正确的结果,例如:
SELECT * FROM OPENQUERY(SERVER, ''SELECT * FROM db.table WHERE field = ' + '''' + '''' + @var+ '''' + ''''')'
我现在有一个 C# WinForms 应用程序,它使用 Entity Framework v4 来访问数据,并希望在代码中访问这个存储过程。
我做了通常的“从数据库更新模型”并添加了存储过程,然后选择添加函数导入(例如称为 getData)。然后我注意到单击“获取列信息”后,我收到了以下消息:
'The selected stored procedure returns no columns'
此时我点击了确定,然后写了一些简单的代码来访问SP(如下):
using(var context = new MyContext())
{
var result = context.getData('paramdata');
}
单步执行代码时,结果设置为“-1”。在做了一些阅读之后,有人建议在我所做的存储过程中将 NOCOUNT 设置为 OFF,但没有任何区别。
我不确定为什么这适用于 SQL Server 中的查询而不是实体框架?
有没有办法让这个工作?
提前致谢。