.net core ef тестирование миграции - применить миграцию, используя метод C#

Я думаю, что миграция должна быть проверена. На мой взгляд, лучшим решением будет интеграционное тестирование. Текущее решение заключается в применении миграций в базе данных памяти, но проблема в том, что я хочу запустить сценарии миграции также.

Знаете ли вы, как применить миграцию с использованием кода C#?

2 ответа

Решение

Получите ваш контекст и позвоните

context.Database.Migrate();

В методе Startup.cs Configure мы запускаем миграции следующим образом (в.Net core 2.0):

using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
            {
                serviceScope.ServiceProvider.GetService<DataContext>().Database.Migrate();
            }

Я не уверен, как вы можете проверить это с помощью testa, возможно выполнить резервное копирование и восстановить работающую базу данных в тестовую, а затем настроить DataContext, чтобы он указывал на тест, и запускать миграцию там?

Согласно /questions/6447389/entity-framework-core-10-s-pervyim-kodom-migratsii-s-ispolzovaniem-koda/6447393#6447393. Мне удалось узнать, как перейти на конкретную миграцию, используя ядро ​​ef в коде C#.

context.Database.EnsureDeleted(); // ensure db is deleted on starting
context.Database.Migrate(); // run migrations
context.GetService<IMigrator>().Migrate("0"); // 0 this will rollback all migrations, you can pass in the specific migration name here to go up or down to that migration

Используя командную строкуdotnet ef database update 0