运行项目时 EF Core 自动迁移

启动项目时自动迁移执行数据库迁移,方便在使用容器部署项目时,启动容器即可迁移数据。

using IdentityServer4;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using MiniShop.Ids;
using MiniShop.Ids.Config;
using MiniShop.Ids.Data;
using MiniShop.Ids.Models;
using Serilog;

namespace Microsoft.Extensions.DependencyInjection
{
    public static class ServiceCollectionExtensions
    {
        public static IServiceCollection AddWebHost(this IServiceCollection services, IWebHostEnvironment env)
        {
            services.AddControllersWithViews().AddRazorRuntimeCompilation();

            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseMySql(BasicSetting.Setting.ConnectionString));

            services.AddMigrations();

            return services;
        }

        public static IServiceCollection AddMigrations(this IServiceCollection services)
        {
            // 自动迁移
            services.BuildServiceProvider().GetService<ApplicationDbContext>().Database.Migrate();
            return services;
        }

    }
}

使用 Database.Migrate() 自动迁移(migration),怎么回滚呢?
https://stackoverflow.com/questions/69714351/how-to-downgrade-entity-framework-core-migrations-in-docker-container-docker-swa

EF 迁移到 Docker 容器可参考:
https://makolyte.com/asp0000-calling-buildserviceprovider-from-application-code-results-in-an-additional-copy-of-singleton-services-being-created/

posted @   weichangk  阅读(437)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示