Как создать сложный тип для набора результатов, возвращаемого в качестве временной таблицы из хранимой процедуры?

Как получить столбцы таблицы temp, которая содержит несколько столбцов таблицы, возвращаемых из хранимой процедуры в функции сущности framework import?.

спасибо

2 ответа

Первый шаг:

Сначала вам нужно создать обычную процедуру хранения без использования временной таблицы. эта процедура хранения будет содержать все имя столбца (обычная таблица + временная таблица). Теперь вы сможете создать сложный тип в EDMX

Второй шаг:

Теперь вы измените свою процедуру хранилища, как хотите написать , используя временную таблицу

Третий шаг:

Обновите модель EDMX


Вы должны предоставить контракт с данными на сервер sql, чтобы инфраструктура сущности могла использовать его для создания сложного объекта. Поэтому для предоставления контракта мы будем использовать фиктивный оператор 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 для создания объекта сложного типа.

licensed under cc by-sa 3.0 with attribution.