Я нахожусь в проекте, где мы используем Code First on Entity Framework для нашей базы данных.Программно создавая первые миграции кода
Мы хотим изменить всю нашу непрерывную интеграцию, чтобы потреблять сгенерированный пакет MSI ниже по течению, но с EF, который представляет несколько осложнений.
- При изменении модели, мы должны сгенерировать Based миграции кода в противном случае пакет будет перерыв (Database против модели)
- Мы предпочитаем, чтобы удалить создание миграции из команды (на основе https://msdn.microsoft.com/en-us/data/dn481501.aspx)
Я пробовал различные вещи из Интернета, но большинство, похоже, требует AutomaticMigrations
быть установлен в true
, а также AutomaticMigrationDataLossAllowed
(см: http://romiller.com/2012/02/09/running-scripting-migrations-from-code/).
Я попытался воспроизвести то, что Add-Migration
делает, просматривая отражатель .NET, но я не могу найти способ вызвать команду System.Data.Entity.Migrations.AddMigrationCommand
, которая вызывается через Powershell.
У кого-нибудь есть идеи вообще о том, как я могу приблизиться к достижению этого, не делая что-то чрезвычайно грязное? Это то, что я думаю, что многие люди захотят сделать/сделали ...
Большое спасибо!
Вы хотите, чтобы этот инструмент фактически создавал файлы миграции и добавлял их в проект? Или просто обновите базу данных до вашей текущей схемы кода? Если это последний, почему автоматическая миграция не является вариантом? Если это первый, не можете ли вы просто добавить событие сборки, которое запускает команду «Add-Migration»? – Rob
@Rob Мы пытаемся создать инструмент, посредством которого наш CI может использовать это и генерировать наши миграции для нас в конце фиксации. Это позволит нам автоматически создать MSI из фиксации, чтобы модель оставалась в синхронизации с миграциями, и MSI не будет разбита. Из-за масштаба нашей базы данных автоматическая миграция почти наверняка приведет к автоматической потере данных. 'Add-Migration', похоже, не доступен извне оболочки VS – LukeHennerley
Не могли бы вы пояснить, что« автоматические миграции почти наверняка приведут к автоматической потере данных ». Почему, по вашему мнению, существует какая-либо разница между * вашим скриптом, запуском Add-Migration и EF, выполняющим Add-Migration? Или это просто вы хотите иногда запускать ручную миграцию и хотите избежать смещения авто/ручного? –