Отражение изменений, внесенных в хранимую процедуру в сложном типе, созданном Entity Framework

Итак, у меня есть база данных на SQL Server, к которой я подключаюсь, и использую Entity Framework 4.1 для генерации моих классов POCO, что в целом работает очень хорошо. Существуют также хранимые процедуры, которые я использую с помощью функции «импорт функции» для извлечения результирующих строк данных при их вызове. По сути, я использую следующий процесс:

  1. Щелкните правой кнопкой мыши на Model.edmx и выберите «Импорт функции ...»
  2. Выберите процедуру из раскрывающегося списка
  3. Введите желаемое имя импорта функции
  4. ] Нажмите «Получить информацию о столбце»
  5. Нажмите «Создать новый сложный тип»
  6. Нажмите «ОК»

, и это создаст класс POCO для определения набора результатов, и я могу сделать что-то вроде:

var query = context.GetMyStuff (). AsQueryable ();

для получения результатов. Кажется, это работает нормально.

Теперь у меня проблема, когда я пытаюсь изменить хранимую процедуру, а затем заставить изменения распространиться на мой код. Например, я добавил в таблицу дополнительный столбец, а затем обновил хранимую процедуру, чтобы вернуть данные этого столбца как часть результатов. Я не вижу, как сделать так, чтобы это обновление распространялось на материал импорта функции, т.е. получить сгенерированный POCO, чтобы иметь новое свойство для этого добавленного столбца.

Что нужно делать, чтобы это обновление процедуры отражалось на стороне C #? Придется ли мне каждый раз создавать новый класс? Для меня было неочевидно, как это сделать.


Дополнительная информация:

Когда я пытался «Обновить» сложный тип, как было предложено в ответе Ладислава на этот вопрос , Я получаю сообщение об ошибке «Убедитесь, что имя FunctionImport уникально».

Если я попробую, какой EJ Бреннан предлагает ниже, я получаю то же сообщение об ошибке.

То, что делает , работает, по крайней мере, для меня, - это открыть файл Model.edmx в Notepad ++, найти строку FunctionImport и удалить ее, а затем восстановить . Это не идеально, но сработало.

9
задан Community 23 May 2017 в 12:18
поделиться