C# 实体框架中的OPENQUERY存储过程
我正在尝试创建一个存储过程,该过程从链接到Sql Server DB2服务器的数据库中获取值。在该存储过程中,我有以下查询:C# 实体框架中的OPENQUERY存储过程,c#,sql-server,db2,C#,Sql Server,Db2,我正在尝试创建一个存储过程,该过程从链接到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 ''''' + @Ca
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();
实体不知道存储过程的返回类型。请使用同义词或视图。谢谢。你能给我举个例子吗。