Сохраненные процедуры и обновление EDMX
У меня были бесконечные проблемы с хранимыми процедурами и EDMX. Я создал процедуру, обновил модель из базы данных, и все сработало. Затем я удалил столбец и добавил новый в хранимую процедуру. Я обновил модель, но EDMX, похоже, не обновил определение proc.
Я удалил proc и сделал обновление, но вручную пришлось удалить все ссылки на proc. Я закончил просто переименование proc и импорт через обновление модели из базы данных.
У меня была такая же проблема. Добавлен новый столбец и переименован в существующий столбец. Я обновил EDMX через модель обновления из базы данных, но никаких изменений в EDMX не было, и, очевидно, во время выполнения он терпит неудачу. Как следует обновлять хранимую процедуру с помощью Entity Framework?
![enter image description here]()
Я удалил proc, восстановил модель, удалил файлы cs для proc, скомпилировал, затем снова добавил процедуру в базу данных, обновил модель и ударил! Он добавляет одну и ту же модель 3 раза, причем только последняя является правильной. Почему он продолжает возвращать старые версии?
Ответы
Ответ 1
Единственное исправление, которое я смог найти, это закрыть EDMX и вручную отредактировать XML, который даже после удаления хранимой процедуры из базы данных и обновления модели из базы данных все еще упоминал о proc. Удаление строк из XML решило проблему.
Ответ 2
(Это решение для EF 6. Я не пробовал в других версиях EF. Он работает хорошо.)
Перейдите в браузер моделей.
MyStoreProc - это имя хранимой процедуры (в качестве примера). MyStoreProc появится в трех местах.
- 1-е место - под сложными типами → как MyStoreProc_result
- 2-е место - под функцией Импорт → как MyStoreProc
- 3-е место - в сохраненной
Procdures/Functions → как MyStoreProc
Удалите все три из модели.
Сохраните edmx (щелкнув в окне, затем ctrl + S). Затем щелкните правой кнопкой мыши и щелкните по обновлению модели из базы данных. Затем добавьте обновленную хранимую процедуру и снова сохраните.
Решено без всяких хлопот:)
Ответ 3
Прежде всего, обновите свой SP с помощью "Обновить модель из базы данных", если он работает, отлично, если нет, и выбрасывает одно и то же исключение, выполните следующие шаги.
1.Double Нажмите на .edmx файл.
2. В браузере моделей выберите "Удалить СП" из сложных типов, импортов функций и хранимых процедур/функций.
3. Сохранить все.
4.Добавьте снова свой SP через "Обновить модель из базы данных".
5. Сохраните все.