Предположит следующее:EF не может сделать вывод возврата схемы из хранимой процедуры выбора из таблицы #temp
CREATE PROCEDURE [MySPROC]
AS
BEGIN
CREATE TABLE #tempSubset(
[MyPrimaryKey] [bigint] NOT NULL,
[OtherColumn] [int] NOT NULL)
INSERT INTO #tempSubset (MyPrimaryKey, OtherColumn)
SELECT SomePrimaryKey, SomeColumn
FROM SomeHugeTable
WHERE LimitingCondition = true
SELECT MyPrimaryKey, OtherColumn
FROM #tempSubset
WHERE SomeExpensiveCondition = true
END
Когда я произвожу функцию импорт или карты типа возвращаемого значения, EF не создает сложный типа или говорит мне:
Выбранная хранимая процедура или функция не возвращает столбцы
Как преодолеть это?
Другие ответы предполагают using table variables (не собирается делать это по соображениям производительности) faking the return schema and commenting out the real stored procedure, другие предполагают doing similar with views ... но должен быть способ сделать это без необходимости добавлять излишнюю нагрузку или требуя, чтобы я сломать хранимую процедуру обновить модель?
работал большой, и намного лучше, чем те альтернативы! спасибо;) – JoeBrockhaus
Испытали и отлично поработали! Добавлю скрипт, который я использую для генерации моих CREATE PROCEDURES – SleepyBoBos
Обратите внимание, что если вы создадите сложный тип в своей модели, после предоставления контракта данных в этом формате, свойства будут обладать нулевым значением, то есть «public Nullable MyProperty {get; задавать;})'. Это нормально, поскольку он будет обрабатывать случай, когда значение столбца db равно null. Если вы делаете что-то вроде «SELECT 1 AS [MyProperty column]» в контракте, свойство будет «public int MyProperty {get; задавать; } '(вы должны фактически удалить сложный тип класса
SleepyBoBos