簡體   English   中英

實體框架中的OPENQUERY存儲過程

[英]OPENQUERY stored procedure in Entity framework

我正在嘗試創建一個存儲過程,該存儲過程從鏈接到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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM