Первый код структуры Entity - как запустить Update-Database для производственной базы данных
Я хочу знать, как запустить команду "Обновить-База данных" для производственной базы данных.
База данных "Обновление-База данных" отлично работает с моей локальной машины, но как мне заставить ее работать на производственные данные?
Итак, если я вношу изменения в свое приложение, а затем запускаю "публикацию" через визуальную студию, это отлично подходит для кодовой части вещей, но как я могу запустить команду "Обновить-База данных" для производственных данных.
Надеюсь, этот вопрос имеет смысл...
Спасибо,
Ответы
Ответ 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)