我正在尝试创建一个存储过程,它从链接到我们的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)
Everithing工作正常但是当我将存储过程添加到Entity模型时,过程的签名是:
GetUsers(string):int
但是当我运行该过程时返回数据行。如何修改过程以返回不是整数的数据集?
答案 0 :(得分: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();