Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架中的OPENQUERY存储过程_C#_Sql Server_Db2 - Fatal编程技术网

C# 实体框架中的OPENQUERY存储过程

C# 实体框架中的OPENQUERY存储过程,c#,sql-server,db2,C#,Sql Server,Db2,我正在尝试创建一个存储过程,该过程从链接到Sql Server DB2服务器的数据库中获取值。在该存储过程中,我有以下查询: DECLARE @CarID nvarchar(10) DECLARE @TSQL varchar(8000) SET @CarID = '1111' SELECT @TSQL = 'SELECT * FROM OPENQUERY(LINKEDSERVER,''SELECT * FROM TestTable WHERE Column LIKE ''''' + @Ca

我正在尝试创建一个存储过程,该过程从链接到Sql Server DB2服务器的数据库中获取值。在该存储过程中,我有以下查询:

DECLARE @CarID nvarchar(10)
DECLARE @TSQL varchar(8000)
SET @CarID = '1111'
  SELECT  @TSQL = 'SELECT * FROM OPENQUERY(LINKEDSERVER,''SELECT * FROM TestTable WHERE Column LIKE ''''' + @CarID + '%' + ''''''')'
  EXEC (@TSQL)
一切正常,但当我将存储过程添加到实体模型时,过程的签名是:

GetUsers(string):int

但当我运行这个过程时,它会返回数据行。如何修改该过程以返回数据集而不是整数?

EF处理的存储过程与标量函数有些类似。EF不知道存储过程中将选择多少数据集和哪些列,因此无法生成类

在链接服务器上选择内容的最佳方法是使用视图。 只需创建包含四部分名称的视图,并将其添加到EF数据模型中。然后EF将能够生成该类

CREATE VIEW [dbo].[vTestTable]
AS
    Select * from [LINKEDSERVER].[DatabaseName].[Schema].[TestTable]
GO
然后是.NET

var result = db.vTestTable.Where(t=> t.Column.StartsWith(CarId)).ToList();

实体不知道存储过程的返回类型。请使用同义词或视图。谢谢。你能给我举个例子吗。