asp net core 3.1 update database production code example

Example 1: ef rollback migration

//EF 6.4 
//PM> Update-Database -TargetMigration:"NameOfSecondToLastMigration"

Example 2: entity framework update database automatically

public static IHost MigrateDbContext<TContext>(
    this IHost host,
    Action<TContext, IServiceProvider> seeder = null)
    where TContext : DbContext
{
    using (var scope = host.Services.CreateScope())
    {
        var services = scope.ServiceProvider;
        var logger = services.GetRequiredService<ILogger<TContext>>();
        var context = services.GetService<TContext>();

        try
        {
            logger.LogInformation($"Migrating database associated with context {typeof(TContext).Name}");
            var retry = Policy.Handle<Exception>().WaitAndRetry(new[]
            {
                TimeSpan.FromSeconds(5),
                TimeSpan.FromSeconds(10),
                TimeSpan.FromSeconds(15),
            });

            retry.Execute(() =>
            {
                context.Database.Migrate();
            });
            logger.LogInformation($"Migrated database associated with context {typeof(TContext).Name}");
        }
        catch (Exception ex)
        {
            logger.LogError(ex, $"An error occurred while migrating the database used on context {typeof(TContext).Name}");
        }
    }

    return host;
}