Каковы обходные пути для возврата переменных числа столбцов из динамического sql в структуру сущностей? - PullRequest
0 голосов
/ 25 февраля 2011

Итак, у меня есть хранимая процедура, которая имеет динамический sql и возвращает вычисленные значения.Возвращенный набор результатов может быть из переменных столбцов.

Итак, теперь проблема в том, что я хочу добавить эту процедуру в Entity Framework 4, и я не думаю, что она будет поддерживать его. Итак, теперь одним из способов сделать это будет создание временных таблиц или табличных значенийпеременные могут помочь, но мы не хотим идти по этому пути.

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

1 Ответ

0 голосов
/ 25 февраля 2011

Обходной путь заключается в том, что вам нужно изменить свой SP, чтобы он всегда возвращал все возможные столбцы, и вы используете заполнители для тех, которые отсутствуют.Например, если ваш SP возвращает col1, col2 и col3 в одном сценарии, а col1, col2, col4 и col5 в другом сценарии, вам необходимо всегда возвращать col1, col2, col3, col4 и col5 и использовать фиктивные значения (нольили пустая строка, например) для столбцов, для которых у вас нет значений.Например,

SELECT col1
     , null as col2
     , col3
 ...

Следует помнить о EF: когда он генерирует сложный тип, он в основном вызывает ваш SP и передает null для всех параметров.Независимо от того, какой набор результатов будет возвращен, это то, что EF собирается использовать при создании сложного типа.

Мы обнаружили, что это одна из самых неприятных вещей с EF.

...