Итак, у меня есть база данных в SQL Server, к которой я подключаюсь и использую Entity Framework 4.1 для генерации моих классов POCO, что в целом работает довольно хорошо.Существуют также хранимые процедуры, в которых я использую функцию «импорт функции» для создания получения полученных строк данных при их вызове.По сути, я использую следующий процесс:
- Щелкните правой кнопкой мыши Model.edmx и выберите «Импорт функции ...»
- Выберите процедуру из выпадающего списка
- Введите желаемое имя для импорта функции
- Нажмите «Получить информацию о столбце»
- Нажмите «Создать новый комплексный тип»
- Нажмите «ОК»
, и это создаст класс POCO для определения набора результатов, и я могу сделать что-то вроде:
var query = context.GetMyStuff().AsQueryable();
для получения результатов.Кажется, это работает просто отлично.
Теперь проблема в том, что я пытаюсь изменить хранимую процедуру, а затем заставить изменения распространяться на мой код.Например, я добавил дополнительный столбец в таблицу, а затем обновил хранимую процедуру, чтобы вернуть данные этого столбца как часть результатов.Я не вижу, как заставить это обновление распространяться на функции импорта, то есть получить сгенерированный POCO, чтобы иметь новое свойство для этого добавленного столбца.
Что за тренировка должна отражать это обновление процедуры на стороне C #?Я собираюсь каждый раз делать новый урок?Мне было неочевидно, как это сделать.
Дополнительная информация:
Когда я пытался «обновить» тип Complex, как было предложено в ответе Ладислава на этот вопрос , я получаю сообщение об ошибке «Убедитесь, что имя FunctionImport уникально».
Если я попробую то, что предлагает Э.Дж. Бреннан ниже, я получу то же сообщение об ошибке.
То, что делает , работает, по крайней мере, для меня, - это открыть файл Model.edmx в Notepad ++, найти строку FunctionImport и удалить ее, а затем восстановить ее.Это не идеально, но это сработало.