2017-07-18 67 views
0

我试图创建一个从链接到我们的SQL服务器DB2 server.In存储过程获取值的存储过程我有这个疑问:OPENQUERY存储过程

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) 

Everithing工作很好,但是当我添加存储过程到实体模型的过程的签名是:

GetUsers(string):int 

但是,当我运行过程返回数据行。我如何修改程序以返回一个不是整数的数据集?

+0

实体不知道存储过程返回的类型。改用同义词或视图。 – Peter

+0

谢谢。请给我一个例子。 – Lio

回答

0

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();