Подтвердить что ты не робот

Первый код структуры Entity - как запустить Update-Database для производственной базы данных

Я хочу знать, как запустить команду "Обновить-База данных" для производственной базы данных.

База данных "Обновление-База данных" отлично работает с моей локальной машины, но как мне заставить ее работать на производственные данные?

Итак, если я вношу изменения в свое приложение, а затем запускаю "публикацию" через визуальную студию, это отлично подходит для кодовой части вещей, но как я могу запустить команду "Обновить-База данных" для производственных данных.

Надеюсь, этот вопрос имеет смысл...

Спасибо,

4b9b3361

Ответ 1

Добавить, что уже сказал @David...

Лично я не доверяю automatic updates сценариям "live", и я всегда предпочитаю ручное администрирование баз данных (т.е. существует проблема с permissions, необходимая для создания или изменения Db - не говоря уже об общем хостинге и т.д.), но из того, что я видел, миграция довольно прочная, когда дело доходит до синхронизации (на самом деле, единственный способ "развязать" их обычно - удалить Db и принудительно выполнить полное/новое обновление).

Вот сообщение, которое я сделал некоторое время назад о том, как script и synchronize database / code и ориентирован на сценарии развертывания (и когда возникают проблемы). Это не относится к вам (пока), но что-то нужно иметь в виду.

MVC3 и первая миграция кода - модель, поддерживающая контекст "blah" , изменилась с момента создания базы данных

Ответ 2

См. Использование миграции Entity Framework (сначала кода) в процессе производства, чтобы ваше приложение автоматически обновляло базу данных при инициализации Entity Framework.

Теперь, если вам удобнее иметь ручное управление миграцией, вы можете использовать аргумент - Script для команды "Обновить базу данных" на вашей машине разработчика для создания сценариев SQL, которые затем можно запустить с производственной базой данных.

http://msdn.microsoft.com/en-us/data/jj591621.aspx (см. раздел "Получение раздела SQL

Ответ 3

Вы просто хотите автоматически обновлять базу данных до последней версии, когда и где запускается ваше приложение (разработка и производство)?

Это не может быть хорошей идеей, за исключением очень простых сценариев, где вы знаете, что можете доверять автоматической миграции и вручную переносить базу данных (s) не представляется возможным. См. Этот ответ: fooobar.com/info/110423/.... Если вы проигнорируете это предупреждение, читайте дальше.

Добавьте в web.config следующее:

<entityFramework>
<contexts>
  <context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false">
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" />
  </context>
</contexts>

Это может выглядеть пугающе, но в основном это похоже на следующий код:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());

Если вам не повезло с web.config, вы также можете попытаться поместить этот код в Global.asax. Я лично предпочитаю настройку по коду.

Если вы хотите, чтобы ваш файл конфигурации выглядел более чистым, вы также можете получить новый класс из класса шаблона MigrateDatabaseToLatestVersion, поэтому вам не нужно использовать критический синтаксис для передачи аргументов типа в файле web.cofig:

public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}

Это делается для установки инициализатора базы данных, который автоматически обновляет базу данных до последней версии.

(Источник и более подробная информация: http://www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html)