/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <param name="WebRootPath"></param> /// <returns></returns> public static async Task SeedDataAsync(MyContext myContext, string WebRootPath) { try { Console.WriteLine("Config data init..."); Console.WriteLine($"Is multi-DataBase: {Appsettings.app(new string[] { "MutiDBEnabled" })}"); if (Appsettings.app(new string[] { "MutiDBEnabled" }).ObjectToBool()) { Console.WriteLine($"Master DB Type: {MyContext.DbType}"); Console.WriteLine($"Master DB ConnectString: {MyContext.ConnectionString}"); Console.WriteLine(); } else { Console.WriteLine("DB Type: " + MyContext.DbType); Console.WriteLine("DB ConnectString: " + MyContext.ConnectionString); } Console.WriteLine("Create Database..."); myContext.Db.DbMaintenance.CreateDatabase(); var classes = Assembly.Load("MyWebApiProject.Model").GetTypes().Where(x => x.Namespace == "MyWebApiProject.Model.DbModel").ToArray(); myContext.CreateTableByEntity(false, classes); Console.WriteLine("Database is created success!"); Console.WriteLine(); if (Appsettings.app(new string[] { "AppSettings", "SeedDBDataEnabled" }).ObjectToBool()) { if (string.IsNullOrEmpty(WebRootPath)) { throw new Exception("获取wwwroot路径时,异常!无法进行DBDataSeed"); } SeedDataFolder = Path.Combine(WebRootPath, SeedDataFolder); Console.WriteLine("Seeding database..."); foreach (var item in classes) { if (!(((ReflectionUtil.ExportByClassType(typeof(MyContext), item, "ExitList", null)) as Task <bool>).Result) && File.Exists(string.Format(SeedDataFolder, item.Name))) { string json = FileUtil.ReadFile(string.Format(SeedDataFolder, item.Name)); if (json != string.Empty) { object obj = JsonUtil.ParseObjByJson(ReflectionUtil.CreateGeneric(typeof(List <>), item).GetType(), json); bool result = (ReflectionUtil.ExportByClassType(typeof(MyContext), item, "InsertTables", new object[] { obj }) as Task <bool>).Result; if (result) { Console.WriteLine($"Tables:{item.Name} Insert Data Suceess!"); } else { Console.WriteLine($"Tables:{item.Name} Insert Data Fail!"); } } } } Console.WriteLine(); } } catch (Exception ex) { throw new Exception(ex.Message); } }