-1

Я использую код Entity Framework сначала в своем приложении. Но при использовании этого после обновления модели каждый раз, когда мне приходится включать автоматическую миграцию и запускать update-database с помощью консоли диспетчера пакетов. У кого-нибудь есть решение по этому вопросу, можем ли мы автоматизировать это и update-database без использования консоли диспетчера пакетов.Как включить миграцию через код только без использования консоли диспетчера пакетов

ответ

1

Вы должны выполнить только 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();