如何获取包含从实体框架函数导入中的存储过程返回的多个表列的临时表的列?
谢谢
第一步:
首先,您必须在不使用临时表的情况下创建一个正常的存储过程。此存储过程将包含所有列名(普通表+临时表)。现在将能够在您的EDMX中创建复杂类型
第二步 :
现在您将修改您的存储过程,因为您确切地想要使用临时表编写
第三步:
更新您的EDMX模型
您必须向 sql server 提供数据协定,以便实体框架可以使用它来生成复杂对象。所以我们将使用一个虚拟的 select 语句来提供合同。select 语句将无法访问,因此不会对代码块造成性能损失。
现在让我们看一个例子:
ALTER PROCEDURE [dbo].[Dummy_SP_Complex_Object_For_Temp_Table]
AS
BEGIN
IF 1 = 2 BEGIN
SELECT
cast(null as int) as WeekNumber,
cast(null as date) as FilterStartDate,
cast(null as date) as FilterEndDate,
cast(null as int) as OrderNumber
WHERE 1 = 2
END
IF OBJECT_ID('tempdb.dbo.#T', '#OrderShipments') IS NOT NULL
DROP TABLE #T;
Create Table #OrderShipments
(
WeekNumber int,
FilterStartDate date,
FilterEndDate date,
OrderNumber int
)
Select WeekNumber, FilterStartDate, FilterEndDate, OrderNumber FROM #OrderShipments order by WeekNumber
END
实体框架无法访问第一个代码块,但它为 EF 创建复杂类型对象提供了必要的信息。