[英]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.