2017-07-18 70 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();