如何获取临时表的列,其中包含从实体框架函数导入中的存储过程返回的多个表列?
感谢
答案 0 :(得分:0)
第一步:
首先,您必须创建一个正常的存储过程,而不使用临时表。此存储过程将包含所有列名称(普通表+临时表)。现在,您可以在 EDMX
中创建复杂类型第二步:
现在您将修改您的商店程序,因为您确实想要使用临时表 >来编写
第三步: 更新 EDMX 模型
答案 1 :(得分:0)
您必须向sql server提供数据协定,以便实体框架可以使用它来生成复杂对象。因此我们将使用虚拟选择语句来提供合同。 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提供了创建复杂类型对象的必要信息。