Я использую Entity Framework (EF) для создания сложного типа из хранимой процедуры. Недавно была изменена хранимая процедура (добавлено больше возвращаемых значений.Я хотел бы обновить сложный тип, который сопоставляется с этой хранимой процедурой.Это возможно, и если да, то как? Я в настоящее время удаляю функцию импорта и сложный тип каждый раз, когда изменения в хранимой процедуре, что, скорее всего, не лучший подход.
Как получить структуру Entity для обновления сложных типов?
Ответ 1
Я нашел другой способ сделать это, не удаляя сложный тип. Вы можете обновить свой комплексный тип, а Visual Studio добавит все измененные столбцы. Вот как:
- Откройте файл .edmx и перейдите в браузер модели.
- Если ваш сохраненный proc изменен, щелкните правой кнопкой мыши по любой белой области в браузере модели и выберите "Обновить модель из базы данных", нажмите "Готово". Это обновит хранимую процедуру.
- Теперь перейдем к XModel.edmx > XModel > EntityContainer: XEntities > Импорт функций (X - ваше имя объекта) и щелкните правой кнопкой мыши тот, который вам нужно обновить. Выберите "Изменить".
- Нажмите "Получить информацию о столбце". Теперь рядом с кнопкой "Тип комплекта" есть кнопка "Обновить". Нажмите эту кнопку, чтобы обновить сложный тип, а затем нажмите кнопку OK.
Это должно сделать это!
Ответ 2
Существует более простой способ добиться этого, посмотрите здесь в SO. Он добавляет некоторую метаинформацию в хранимую процедуру, которую EF использует для создания соответствующего типа возврата для вас.
Часть метаинформации хранимой процедуры не выполняется, она просто сообщает о том, какие столбцы и типы данных возвращаются.