Публикация моей базы данных (развертывание пакета) с помощью Code First Migrations

У меня есть решение VS2012 MVC4 (EF5). При кодировании я использую свой персональный компьютер с установленным на этом компьютере SQL Express. Каждый раз, когда мне нужно опубликовать обновление для компании, я создаю пакет (.zip) и затем импортирую этот пакет в IIS компании (недоступный с моего компьютера разработчика). Каждый раз, когда я публиковал свое решение на сервере IIS компании, я воссоздаю всю базу данных. Это было в прошлом...

Теперь я изменил свое решение и использую Code First Migrations. Когда это необходимо (объекты изменены), я обновляю свою локальную базу данных благодаря консоли диспетчера пакетов (Update-Database).

Мой вопрос: что мне нужно сделать, чтобы обновить базу данных на IIS компании?

Я вижу скриншот ниже на странице объяснения ( http://msdn.microsoft.com/en-us/library/dd465337.aspx), но у меня нет такого экрана при открытии мастера публикации на моем VS2012.

Ниже показан экран на странице документации:

введите описание изображения здесь

Ниже экран у меня есть:

введите описание изображения здесь

Любая помощь с благодарностью.

3 ответа

Вы можете включить этот флажок, отредактировав Properties\YourProject - WebDeploy.pubxml поиск PublishDatabaseSettings

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True">
      <Destination Path="your-connection-string-goes-here" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

Измените Namespace.Models.YourDBClass вашим классом, который наследует DbContext, измените Namespace.Migratins.Configuration, чтобы соответствовать пространству имен конфигурации миграции, и Assambly с вашим именем Assambly.

Сохраните и откройте мастер публикации, у вас будет этот флажок.

Надеюсь, что помощь

Я тоже это видел. Я не уверен, какую эвристику используют инструменты развертывания для определения наличия EF, но эта опция появляется время от времени.

То, что делают инструменты публикации, легко воспроизвести. Вы можете указать инициализатор базы данных в вашем файле web.config (или преобразование в web.config.release) для запуска миграций. Это будет выглядеть примерно так (для преобразования):

 <entityFramework>
     <contexts xdt:Transform="Insert">
       <context type="PlantonDbContextName, PlantonAssemblyName">
         <databaseInitializer
           type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[
               [PlantonDbContextName, PlantonAssemblyName], 
               [PlantonConfigurationName, PlantonAssemblyName]
             ], EntityFramework" />
       </context>
     </contexts> 
 </entityFramework>

Обобщения в файле конфигурации выглядят ужасно, но вы также можете установить инициализатор в коде: http://msdn.microsoft.com/en-us/library/hh829293(v=vs.103).aspx

Надеюсь, это поможет.

Позвольте мне взять удар и задать вопрос:

Был ли это ранее проект VS2010?:-)

Я спрашиваю, потому что процесс преобразования не работает, чтобы обновить VS2010 до VS2012 и сохранить неизменными профили публикации. Просто слишком много правок.

Лучше всего удалить все имеющиеся у вас профили публикации (файлы) и заново создать новые профили публикации.

Убедитесь, что в ответе Оды указан правильный контекст EF. Мастер публикации должен видеть ваш контекст, прежде чем он создаст профили.

Entity Framework Code Первые миграции данных не работают с VS2012 Web Deploy

Другие вопросы по тегам