zoukankan      html  css  js  c++  java
  • 通过webhost扩展方式初始化EFCore数据库

    通过webhost扩展方式初始化EFCore数据库

    1.定义WebHostMigrationExtensions类

     public static class WebHostMigrationExtensions
        {
            public static IWebHost MigrationDbContext<TContext>(this IWebHost host,
                Action<TContext, IServiceProvider> seeder) 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
                    {
                        context.Database.Migrate();
                        seeder(context, services);
                        logger.LogInformation($"执行DbContext{typeof(TContext).Name} seed执行成功!");
                    }
                    catch (Exception ex)
                    {
                        logger.LogError(ex, $"执行DbContext{typeof(TContext).Name} seed执行失败!");
                    }
                }
    
                return host;
            }
        }
    
    public class ApplicationContextSeed
        {
            private UserManager<User> _userManager;
    
            public async Task SeedAsync(ApplicationDbContext context,IServiceProvider service)
            {
                if (!context.Users.Any())
                {
                    _userManager = service.GetRequiredService<UserManager<User>>();
                    var defaultUser = new User
                    {
                        UserName = "Luna@qq.com",
                        Email = "Luna@qq.com",
                        NormalizedEmail= "Luna@qq.com",
                        NormalizedUserName = "admin"
                    };
                    var result = await _userManager.CreateAsync(defaultUser, "pwd123456");
                    if (!result.Succeeded)
                    {
                        throw new Exception("初始化数据库失败");
                    }
                }
            }
        }
    

    2.在buildWebHost中调用

    public static void Main(string[] args)
            {
                BuildWebHost(args)
                .MigrationDbContext<ApplicationDbContext>((context, services) =>
                    {
                        new ApplicationDbContextSeed().SeedAsync(context, services).Wait();
                    })
                    .Run();
            }
    
  • 相关阅读:
    确定java 环境正常 ,启动jmeter 报 Not able to find Java executable or version. Please check your Java installation。
    微信支付功能
    微信公众平台数据统计
    微信公众平台的特供接口
    使用jQuery Mobile实现通讯录
    使用Google Chart API绘制组合图
    Google Chart API 参考 中文版
    使用PHP绘制统计图
    微信公众平台商户模块
    jQuery Mobile入门教程
  • 原文地址:https://www.cnblogs.com/mmry/p/9547657.html
Copyright © 2011-2022 走看看