Модель EF сначала с хранимыми процедурами - PullRequest
3 голосов
/ 08 июля 2011

Я использую EF 4 с моделью в первую очередь ... Я генерирую базу данных из модели. Как я смогу использовать хранимые процедуры в этом сценарии? Они также должны быть автоматически сгенерированы с базой данных ..?

Ответы [ 2 ]

4 голосов
/ 08 июля 2011

Сначала у вас нет хранимых процедур с моделью, и они не будут сгенерированы.Как они могли быть?Хранимая процедура - это логика, определенная в базе данных, и EF ничего не знает об этой процедуре, поэтому он не может создать ее для вас.

Если вы хотите использовать хранимые процедуры, сначала создайте базу данных из модели и сначала перейдите в базу данных.Затем вы можете вручную определить свои процедуры и сопоставить их с моделью.Как только вы это сделаете, вы не сможете сначала вернуться к модели.

Редактировать:

Возможно, есть еще одно решение, но оно нехорошо.Вы будете поддерживать собственный сценарий SQL для всех ваших хранимых процедур (вам все равно придется их писать), и вы измените рабочий процесс для создания базы данных, чтобы запускать ваш сценарий после создания базы данных.Модель сначала использует шаблоны T4 для генерации SQL, а Workflow Foundation 4 - для обработки всего процесса создания базы данных.Шаблон T4 и рабочий процесс могут быть настроены.Проблема в том, что этот шаг добавит хранимые процедуры для вас, но не отобразит их в EDMX.

1 голос
/ 19 августа 2011

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

  1. Загрузите и установите пакет Power для создания базы данных Entity Designer (если, конечно, у вас его еще нет).
  2. Обновите базу данных до последней версии модели, выполнив следующее (приношу извинения, если вы уже знаете следующее, это для тех, кто этого не знает):
    A. Щелкните правой кнопкой мыши в конструкторе и выберите «Создать базу данных из модели»
    Б. В появившемся диалоговом окне выберите параметр «Сгенерировать миграцию SQL и развернуть» с левой стороны. (не забудьте нажать кнопку «Выбрать рабочий процесс» вверху после выбора этой опции).
    C. Нажмите Next, и вы должны увидеть, что он делает свое дело.
  3. Создайте свои хранимые процедуры в базе данных.
  4. Обновите вашу модель с

Теперь ваша модель и база данных синхронизируются. Хитрость в том, что в будущем, когда вы захотите сначала обновить базу данных или модель, просто повторите шаги 2, 3 и 4.

Теперь у вас есть лучшее из обоих миров! Одно слово, хотя, я хотел бы убедиться, что у вас есть последняя версия блока питания (вы должны удалить старую версию из панели управления Windows, затем заново загрузить последнюю версию и установить ее. Если вы не обновляете и у вас VS2010 SP1, то Блок питания не будет отображать необходимое диалоговое окно, когда вы выберете «Создать базу данных», и вы, скорее всего, потеряете свои хранимые процедуры.

Надеюсь, вам понравится. 3.

...