Я использую код Entity Framework сначала в своем приложении. Но при использовании этого после обновления модели каждый раз, когда мне приходится включать автоматическую миграцию и запускать update-database
с помощью консоли диспетчера пакетов. У кого-нибудь есть решение по этому вопросу, можем ли мы автоматизировать это и update-database
без использования консоли диспетчера пакетов.Как включить миграцию через код только без использования консоли диспетчера пакетов
ответ
Вы должны выполнить только Enable-Migrations
, чтобы сгенерировать класс Configuration.cs
и миграцию Initial
. После этого, всякий раз, когда вы меняете модель, вы должны сгенерировать новую миграцию, запустив Add-Migration
, а также вы должны запустить Update-Database
, чтобы применить миграцию к своей базе данных, но вам не нужно снова запускать Enable-Migrations
.
Если вы хотите автоматизировать этот процесс можно включить автоматическую генерацию миграций, установив AutomaticMigrationsEnabled = true
в конструкторе Configuration
класса, а также использовать инициализатор MigrateDatabaseToLatestVersion
базы данных в вашем DbContext
. Это позволит вам просто изменить код модели и ничего не делать с консолью диспетчера пакетов, не требуется Add-Migration
или Update-Database
. Вам все равно нужно запустить Enable-Migrations
один раз, в начале, после создания проекта, для создания миграции Initial
.
В любом случае автоматическая миграция может вызвать некоторые проблемы, я бы не рекомендовал вам их использовать. Поэтому я буду продолжать выполнять команды Add-Migration
всякий раз, когда ваша модель меняется. Вы можете пропустить выполнение Update-Database
, если вы используете инициализатор базы данных MigrateDatabaseToLatestVersion
.
Другой способ сделать это было бы с помощью DbMigrator
запустить эквивалент Update-Database
из кода (но вы не должны это делать, если вы используете инициализатор MigrateDatabaseToLatestVersion
базы данных):
var migrator = new DbMigrator(new DbMigrationsConfiguration());
migrator.Update();