public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); try { // 从 system.IServicec提供程序获取 T 类型的服务。 // 为了大家的数据安全,这里先注释掉了,大家自己先测试玩一玩吧。 // 数据库连接字符串是在 Model 层的 Seed 文件夹下的 MyContext.cs 中 var configuration = services.GetRequiredService <IConfiguration>(); if (configuration.GetSection("AppSettings")["SeedDBEnabled"].ObjToBool()) { var myContext = services.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } } catch (Exception e) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(e, "Error occured seeding the Database."); throw; } } host.Run(); }
public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); var env = services.GetRequiredService <IHostingEnvironment>(); if (env.IsDevelopment()) { try { // 从 system.IServicec提供程序获取 T 类型的服务。 var myContext = services.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } catch (Exception e) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(e, "Error occured seeding the Database."); } } } // 运行 web 应用程序并阻止调用线程, 直到主机关闭。 // 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法 // 将Initialize方法创建的Application管道传入以供处理消息 // 执行HostedServiceExecutor.StartAsync方法 host.Run(); }
public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); //CreateWebHostBuilder(args).Build().Run(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); try { var configuration = services.GetRequiredService <IConfiguration>(); if (configuration.GetSection("AppSettings")["SeedDBEnabled"].ObjToBool()) { var myContext = services.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } } catch (Exception e) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(e, "Error occured seeding the Database."); throw; } } // 运行 web 应用程序并阻止调用线程, 直到主机关闭。 // 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法 // 将Initialize方法创建的Application管道传入以供处理消息 // 执行HostedServiceExecutor.StartAsync方法 host.Run(); }
static void Main(string[] args) { var myContext = new MyContext(); DBSeed.SeedAsync(myContext).Wait(); #region Redis //var conf = new ConfigurationBuilder() // .AddJsonFile("appsettings.json") // .Build(); //string key = "123"; //for (int i = 0; i < 500; i++) //{ // var msg = new { Name = "王维" + i, Status = 1, Gender = 0, Image = "http://localhost:7779/Image/driver.png", Remark = "我是一个特别搞笑的人,他们都叫我小白", IdCard = 610124199303083650, Title = "待办任务" }; // string json = JsonConvert.SerializeObject(msg); // var redis = RedisFactory.GetRedisClient(key); // redis.StringSet(key, json); //} #endregion Console.ReadKey(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger <Startup> logger, DBSeed dBSeed, SchedulerCenterServer schedulerCenter) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } // 添加全局监控(必须放在外层,否则不能返回) app.UseMiddleware <AutoUseMiddleware>(); app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); _logger = logger; // 添加Swagger app.UseSwaggerMildd(); // 添加种子数据 app.UseSeedDataMildd(dBSeed); // 开启QuartzNetJob调度服务 app.UseQuartzJobMildd(logger, dBSeed, schedulerCenter); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { // If in Development, Get Context from scope, and seed the SQLite DB. if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); using (var scope = app.ApplicationServices.CreateScope()) // When done, dispose. Get accesspoint to stuff in the services { var ctx = scope.ServiceProvider.GetService <CShoesContext>(); DBSeed.SeedDB(ctx); } } // Else, get Context and ensure that the database actually exists, or create it. else { using (var scope = app.ApplicationServices.CreateScope()) { var ctx = scope.ServiceProvider.GetService <CShoesContext>(); // ctx.Database.EnsureCreated(); } app.UseHsts(); } // Setup CORS to only allow requests from featured URL's. Allow any method/header, cause lazy app.UseCors("AllowSpecificOrigin"); app.UseMvc(); }
static void Seed() { Console.WriteLine("Hello World!"); using var context = new ReservationContext(); var seeder = new DBSeed(); //seeder.SeedDataToDB(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); using (var scope = app.ApplicationServices.CreateScope()) { var ctx = scope.ServiceProvider.GetService <PetshopContex>(); DBSeed.SeedDB(ctx); } } else { using (var scope = app.ApplicationServices.CreateScope()) { var ctx = scope.ServiceProvider.GetService <PetshopContex>(); ctx.Database.EnsureCreated(); } app.UseHsts(); } app.UseCors("AllowSpecificOrigin"); app.UseHttpsRedirection(); app.UseAuthentication(); app.UseMvc(); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseDeveloperExceptionPage(); if (env.IsDevelopment()) // If in Dev.. { app.UseDeveloperExceptionPage(); using (var scope = app.ApplicationServices.CreateScope()) // When done, dispose. Get accesspoint to stuff in the services { var ctx = scope.ServiceProvider.GetService <PetShopContext>(); // Set ctx to reference to PetShopContext DBSeed.SeedDB(ctx); } } else { using (var scope = app.ApplicationServices.CreateScope()) { var ctx = scope.ServiceProvider.GetService <PetShopContext>(); ctx.Database.EnsureCreated(); } app.UseHsts(); } app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); app.UseAuthentication(); app.UseMvc(); }
public async Task <object> Get() { DBSeed.Seed(); BlogArticleRepository blogArticleRepository = new BlogArticleRepository(); return(await blogArticleRepository.Query()); }
static FreeSQL() { _freesql = new FreeSql.FreeSqlBuilder() .UseConnectionString(ProviderToFreesqlDbType(DbProvider), DbConnection) .Build(); //FluentApi.Config(_freesql); DBSeed.Ensure(_freesql); }
public IContainer DICollections() { var basePath = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath; IServiceCollection services = new ServiceCollection(); services.AddAutoMapper(typeof(Startup)); services.AddSingleton(new Appsettings(basePath)); services.AddSingleton <IRedisCacheManager, RedisCacheManager>(); services.AddScoped <Blog.Core.Model.Models.DBSeed>(); services.AddScoped <Blog.Core.Model.Models.MyContext>(); services.AddScoped <SqlSugar.ISqlSugarClient>(o => { return(new SqlSugar.SqlSugarClient(new SqlSugar.ConnectionConfig() { ConnectionString = BaseDBConfig.ConnectionString, //必填, 数据库连接字符串 DbType = (SqlSugar.DbType)BaseDBConfig.DbType, //必填, 数据库类型 IsAutoCloseConnection = true, //默认false, 时候知道关闭数据库连接, 设置为true无需使用using或者Close操作 IsShardSameThread = true, //共享线程 InitKeyType = SqlSugar.InitKeyType.SystemTable //默认SystemTable, 字段信息读取, 如:该属性是不是主键,标识列等等信息 })); }); //实例化 AutoFac 容器 var builder = new ContainerBuilder(); //builder.RegisterType<AdvertisementServices>().As<IAdvertisementServices>(); //指定已扫描程序集中的类型注册为提供所有其实现的接口。 var servicesDllFile = Path.Combine(basePath, "Blog.Core.Services.dll"); var assemblysServices = Assembly.LoadFrom(servicesDllFile); builder.RegisterAssemblyTypes(assemblysServices) .AsImplementedInterfaces() .InstancePerLifetimeScope() .EnableInterfaceInterceptors(); var repositoryDllFile = Path.Combine(basePath, "Blog.Core.Repository.dll"); var assemblysRepository = Assembly.LoadFrom(repositoryDllFile); builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces(); //将services填充到Autofac容器生成器中 builder.Populate(services); //使用已进行的组件登记创建新容器 var ApplicationContainer = builder.Build(); var blogservice = ApplicationContainer.Resolve <IBlogArticleServices>(); var myContext = ApplicationContainer.Resolve <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); return(ApplicationContainer); }
protected override void Seed(BlueEconomics.Platform.Infrastructure.BlueDbContext context) { // This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. E.g. // DBSeed.Seed(context); }
/// <summary> /// 添加种子数据 /// </summary> /// <param name="app"></param> /// <param name="dBSeed"></param> public static void UseSeedDataMildd(this IApplicationBuilder app, DBSeed dBSeed) { if (app == null) { throw new ArgumentNullException(nameof(app)); } // 创建数据库 dBSeed.CreateDataBase(); // 创建种子数据 dBSeed.CreateDataInfo(); }
public async Task InvokeAsync(HttpContext context) { if (Appsettings.app("AppSettings", "SeedDBEnabled").ObjToBool() || Appsettings.app("AppSettings", "SeedDBDataEnabled").ObjToBool()) { DBSeed.SeedAsync(_myContext, _env.WebRootPath).Wait(); await _next(context); } else { await _next(context); } }
public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); using (IServiceScope scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var ctx = scope.ServiceProvider.GetService <WebShopDbContext>(); DBSeed.SeedDB(ctx); } host.Run(); }
public static void Main(string[] args) { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.Load(File.OpenRead("Log4net.config")); var repo = log4net.LogManager.CreateRepository( Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy)); log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]); // 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。 var host = CreateHostBuilder(args).Build(); var hadSeeded = Environment.GetEnvironmentVariable("ASPNETCORE_HAD_SEED"); if (string.IsNullOrWhiteSpace(hadSeeded)) { // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); try { // 从 system.IServicec提供程序获取 T 类型的服务。 // 数据库连接字符串是在 Model 层的 Seed 文件夹下的 MyContext.cs 中 var configuration = services.GetRequiredService <IConfiguration>(); if (configuration.GetSection("AppSettings")["SeedDBEnabled"].ObjToBool() || configuration.GetSection("AppSettings")["SeedDBDataEnabled"].ObjToBool()) { var myContext = services.GetRequiredService <MyContext>(); var Env = services.GetRequiredService <IWebHostEnvironment>(); DBSeed.SeedAsync(myContext, Env.WebRootPath).Wait(); Environment.SetEnvironmentVariable("ASPNETCORE_HAD_SEED", "1"); } } catch (Exception e) { log.Error($"Error occured seeding the Database.\n{e.Message}"); throw; } } } // 运行 web 应用程序并阻止调用线程, 直到主机关闭。 // 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法 // 将Initialize方法创建的Application管道传入以供处理消息 // 执行HostedServiceExecutor.StartAsync方法 // ※※※※ 有异常,查看 Log 文件夹下的异常日志 ※※※※ host.Run(); }
public IContainer DICollections() { var basePath = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath; IServiceCollection services = new ServiceCollection(); services.AddAutoMapper(typeof(Startup)); services.AddScoped <IHostingEnvironment, HostingEnvironment>(); services.AddSingleton(new Appsettings(basePath)); services.AddSingleton <IRedisCacheManager, RedisCacheManager>(); services.AddScoped <Blog.Core.Model.Models.DBSeed>(); services.AddScoped <Blog.Core.Model.Models.MyContext>(); //实例化 AutoFac 容器 var builder = new ContainerBuilder(); //builder.RegisterType<AdvertisementServices>().As<IAdvertisementServices>(); //指定已扫描程序集中的类型注册为提供所有其实现的接口。 var servicesDllFile = Path.Combine(basePath, "Blog.Core.Services.dll"); var assemblysServices = Assembly.LoadFrom(servicesDllFile); builder.RegisterAssemblyTypes(assemblysServices) .AsImplementedInterfaces() .InstancePerLifetimeScope() .EnableInterfaceInterceptors(); var repositoryDllFile = Path.Combine(basePath, "Blog.Core.Repository.dll"); var assemblysRepository = Assembly.LoadFrom(repositoryDllFile); builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces(); //将services填充到Autofac容器生成器中 builder.Populate(services); //使用已进行的组件登记创建新容器 var ApplicationContainer = builder.Build(); var blogservice = ApplicationContainer.Resolve <IBlogArticleServices>(); var myContext = ApplicationContainer.Resolve <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); return(ApplicationContainer); }
public static void Main(string[] args) { // 配置 Serilog #region Serilog //Log.Logger = new LoggerConfiguration() // // 最小的日志输出级别 // .MinimumLevel.Information() // // 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information // .MinimumLevel.Override("Microsoft", LogEventLevel.Information) // .Enrich.FromLogContext() // // 配置日志输出到控制台 // .WriteTo.Console() // // 配置日志输出到文件,文件输出到当前项目的 logs 目录下 // // 日记的生成周期为每天 // .WriteTo.File(Path.Combine("logs", @"logx.txt"), rollingInterval: RollingInterval.Day) // // 创建 logger // .CreateLogger(); #endregion // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 //CreateHostBuilder(args).Build().Run();//原本 // 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。 var host = CreateHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var configuration = services.GetRequiredService <IConfiguration>(); if (Convert.ToBoolean(configuration.GetSection("AppSettings")["SeedDBEnabled"])) { var myContext = services.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } } catch (Exception e) { throw; } } host.Run(); }
private static void CreateDbIfNotExists(IHost host) { using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService <SellersContext>(); DBSeed.Initialize(context); } catch (Exception ex) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(ex, "An error occurred creating the DB."); } } }
public static void UseSeedDataMildd(this IApplicationBuilder app, MySqlContext mySqlContext, string webRootPath) { if (app == null) { throw new ArgumentNullException(nameof(app)); } try { if (AppSettings.app("AppSettings", "SeedDB").ObjToBool() || AppSettings.app("AppSettings", "SeedDBData").ObjToBool()) { DBSeed.SeedAsyncByEFCore(mySqlContext, webRootPath).Wait(); } } catch (Exception e) { throw new Exception($"自动初始化数据错误,错误信息:\n{e.Message}"); } }
public static void Main(string[] args) { Logger logger = LogManager.GetCurrentClassLogger(); try { var host = CreateHostBuilder(args).Build(); logger.Trace("网站启动中..."); using (IServiceScope scope = host.Services.CreateScope()) { logger.Trace("初始化NLog"); //确保NLog.config中连接字符串与appsettings.json中同步 NLogExtensions.EnsureNlogConfig("NLog.config", "mssql", scope.ServiceProvider.GetRequiredService <IConfiguration>().GetSection("ConnectionStrings:PHDbContext").Value); logger.Trace("初始化数据库"); //初始化数据库 DBSeed.Initialize(scope.ServiceProvider.GetRequiredService <IUnitOfWork <PHDbContext> >()); //for test -start //用于查看彩色控制台样式,以及日志等级过滤 /*logger.Trace("Test For Trace"); * logger.Debug("Test For Debug"); * logger.Info("Test For Info"); * logger.Warn("Test For Warn"); * logger.Error("Test For Error"); * logger.Fatal("Test For Fatal");*/ //for test -end } logger.Trace("网站启动完成"); host.Run(); } catch (Exception ex) { logger.Fatal(ex, "网站启动失败"); throw; } }
/// <summary> /// 开启QuartzNetJob调度服务 /// </summary> public async static void UseQuartzJobMildd(this IApplicationBuilder app, ILogger <Startup> logger, DBSeed dBSeed, SchedulerCenterServer schedulerCenter) { if (app == null) { throw new ArgumentNullException(nameof(app)); } var tasksQzs = dBSeed.GetTable <TasksQz>().Response?.Where(t => t.IsStart).ToList(); Console.WriteLine("启动任务数量:" + tasksQzs.Count); foreach (var item in tasksQzs) { var res = await schedulerCenter.AddScheduleJobAsync(item); string msg = res.Success ? "启动任务:" + item.Name : "启动任务失败:" + item.Name; Console.WriteLine(msg); logger.LogInformation(msg); } }
public static void UseSeedDataMildd(this IApplicationBuilder app, MyContext myContext, string webRootPath) { if (app == null) { throw new ArgumentNullException(nameof(app)); } try { if (Appsettings.app("AppSettings", "SeedDBEnabled").ObjToBool() || Appsettings.app("AppSettings", "SeedDBDataEnabled").ObjToBool()) { DBSeed.SeedAsync(myContext, webRootPath).Wait(); } } catch (Exception e) { log.Error($"Error occured seeding the Database.\n{e.Message}"); throw; } }
private static void createConnection() { try { if (!System.IO.File.Exists(Application.dataPath + "mainDb.sqlite")) { // db seed will create a new database with tables DBSeed seed = new DBSeed(connectionString); seed.resetDatabase(); Debug.LogWarning("Database not found. Creating a new one. This leads to a complete loss of data."); } dbConnection = new SqliteConnection(connectionString); dbConnection.Open(); } catch (Exception e) { Debug.LogError(e); } }
public static void Main(string[] args) { // 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。 var host = CreateWebHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); //执行完startup类之后才执行下面 #region 生成数据库 生成一次之后就可以注释掉了 以防重复执行后覆盖数据 或者在 appsettings.json修改 SeedDBEnabled 为false try { // 从 system.IServicec提供程序获取 T 类型的服务。 // 为了大家的数据安全,这里先注释掉了 // 数据库连接字符串是在 Model 层的 Seed 文件夹下的 MyContext.cs 中 var configuration = services.GetRequiredService <IConfiguration>(); if (configuration.GetSection("AppSettings")["SeedDBEnabled"].ObjToBool()) { var myContext = services.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } } catch (Exception e) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(e, "Error occured seeding the Database."); throw; } } #endregion // 运行 web 应用程序并阻止调用线程, 直到主机关闭。 // 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法 // 将Initialize方法创建的Application管道传入以供处理消息 // 执行HostedServiceExecutor.StartAsync方法 host.Run(); }
public static void Main(string[] args) { try { var host = CreateHostBuilder(args).Build(); using (IServiceScope scope = host.Services.CreateScope()) { //using MS.WebCore.Logger //添加以上using引用 ///确保NLog.config中连接字符串与appsettings.json中同步 NLogExtensions.EnsureNlogConfig("NLog.config", "MySQL", scope.ServiceProvider.GetRequiredService <IConfiguration>().GetSection("ConectionStrings:MSDbContext").Value); //初始化数据库 DBSeed.Initialize(scope.ServiceProvider.GetRequiredService <IUnitOfWork <MSDbContext> >()); } host.Run(); } catch (Exception ex) { throw; } }
public static void Main(string[] args) { var host = BuildWebHost(args); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService <ApplicationDbContext>(); DBSeed.Seed(context); } catch (Exception ex) { var logger = services.GetRequiredService <ILogger <Program> >(); logger.LogError(ex, "An error occurred while seeding the database."); } } host.Run(); }
public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var service = scope.ServiceProvider; var loggerFactory = service.GetRequiredService <ILoggerFactory>(); try { var myContext = service.GetRequiredService <MyContext>(); DBSeed.SeedAsync(myContext).Wait(); } catch (Exception e) { var logger = loggerFactory.CreateLogger <Program>(); logger.LogError(e, "Error occured seeding the Database."); } } host.Run(); }
public static void Main(string[] args) { // 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的,将返回一个构造的WebHost,最终生成宿主。 var host = CreateHostBuilder(args).Build(); // 创建可用于解析作用域服务的新 Microsoft.Extensions.DependencyInjection.IServiceScope。 using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService <ILoggerFactory>(); try { // 从 system.IServicec提供程序获取 T 类型的服务。 // 数据库连接字符串是在 Model 层的 Seed 文件夹下的 MyContext.cs 中 var configuration = services.GetRequiredService <IConfiguration>(); if (configuration.GetSection("AppSettings")["SeedDBEnabled"].ObjToBool() || configuration.GetSection("AppSettings")["SeedDBDataEnabled"].ObjToBool()) { var myContext = services.GetRequiredService <MyContext>(); var Env = services.GetRequiredService <IWebHostEnvironment>(); DBSeed.SeedAsync(myContext, Env.WebRootPath).Wait(); } } catch (Exception e) { log.Error($"Error occured seeding the Database.\n{e.Message}"); throw; } } // 运行 web 应用程序并阻止调用线程, 直到主机关闭。 // 创建完 WebHost 之后,便调用它的 Run 方法,而 Run 方法会去调用 WebHost 的 StartAsync 方法 // 将Initialize方法创建的Application管道传入以供处理消息 // 执行HostedServiceExecutor.StartAsync方法 // ※※※※ 有异常,查看 Log 文件夹下的异常日志 ※※※※ host.Run(); }