Модель EF сначала с хранимыми процедурами
Я использую EF 4 с моделью в первую очередь... Я генерирую базу данных из модели. Как я смогу использовать хранимые процедуры в этом сценарии? Они также должны быть автоматически сгенерированы с базой данных..?
2 ответа
Сначала у вас нет хранимых процедур с моделью, и они не будут сгенерированы. Как они могли быть? Хранимая процедура - это логика, определенная в базе данных, и EF не знает об этой процедуре, поэтому не может создать ее для вас.
Если вы хотите использовать хранимые процедуры, создайте базу данных из модели и сначала переключитесь на базу данных. Затем вы можете вручную определить свои процедуры и сопоставить их с моделью. Как только вы это сделаете, вы не сможете сначала вернуться к модели.
Редактировать:
Возможно, есть еще одно решение, но оно не очень хорошее. Вы будете поддерживать собственный сценарий SQL для всех ваших хранимых процедур (вам все равно придется их писать), и вы измените рабочий процесс для создания базы данных, чтобы запускать ваш сценарий после создания базы данных. Модель сначала использует шаблоны T4 для генерации SQL, а Workflow Foundation 4 для обработки всего процесса создания базы данных. Шаблон T4 и рабочий процесс могут быть настроены. Проблема в том, что этот шаг добавит хранимые процедуры для вас, но не отобразит их в EDMX.
Ладислав прав, за исключением того, что я нашел возможный обходной путь. Я проверил это, и он работает, хотя не могу сказать, есть ли побочные эффекты к нему.
- Загрузите и установите пакет Power для создания базы данных Entity Designer (если, конечно, у вас его еще нет).
- Обновите свою базу данных до последней версии модели, выполнив следующие действия (Мои извинения, если вы уже знаете следующее, это для тех, кто этого не знает):
A. Щелкните правой кнопкой мыши в конструкторе и выберите "Создать базу данных из модели".
Б. В появившемся диалоговом окне выберите параметр "Сгенерировать миграцию SQL и развернуть" с левой стороны. (не забудьте нажать кнопку "Выбрать рабочий процесс" вверху после выбора этой опции).
C. Нажмите Next, и вы должны увидеть, что он делает свое дело. - Создайте свои хранимые процедуры в базе данных.
- Обновите вашу модель с
Теперь ваша модель и база данных синхронизируются. Хитрость в том, что в будущем, когда вы захотите сначала обновить базу данных или модель, просто повторите шаги 2, 3 и 4.
Теперь у вас есть лучшее из обоих миров! Одно слово, хотя, я хотел бы убедиться, что у вас есть последняя версия блока питания (вы должны удалить старую версию из панели управления Windows, затем заново загрузить последнюю версию и установить ее. Если вы не обновляете, и у вас VS2010 SP1, то Power Pack не будет отображать необходимое диалоговое окно, когда вы выберете "Создать базу данных", и вы, скорее всего, потеряете свои хранимые процедуры.
Надеюсь, вам понравится это. 3.