/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <param name="WebRootPath"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext, string WebRootPath) { try { if (string.IsNullOrEmpty(WebRootPath)) { throw new Exception("获取wwwroot路径时,异常!"); } SeedDataFolder = Path.Combine(WebRootPath, SeedDataFolder); SeedDataFolderMini = Path.Combine(WebRootPath, SeedDataFolderMini); // 创建数据库 myContext.Db.DbMaintenance.CreateDatabase(); // 创建表 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(UserRole)); // 后期单独处理某些表 // myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); Console.WriteLine("Database:WMBlog created success!"); Console.WriteLine(); if (Appsettings.app(new string[] { "AppSettings", "SeedDBDataEnabled" }).ObjToBool()) { Console.WriteLine("Seeding database..."); #region BlogArticle if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { myContext.GetEntityDB <BlogArticle>().InsertRange(JsonHelper.ParseFormByJson <List <BlogArticle> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "BlogArticle"), Encoding.UTF8))); Console.WriteLine("Table:BlogArticle created success!"); } else { Console.WriteLine("Table:BlogArticle already exists..."); } #endregion #region Module if (!await myContext.Db.Queryable <Module>().AnyAsync()) { myContext.GetEntityDB <Module>().InsertRange(JsonHelper.ParseFormByJson <List <Module> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Module"), Encoding.UTF8))); Console.WriteLine("Table:Module created success!"); } else { Console.WriteLine("Table:Module already exists..."); } #endregion #region Permission if (!await myContext.Db.Queryable <Permission>().AnyAsync()) { myContext.GetEntityDB <Permission>().InsertRange(JsonHelper.ParseFormByJson <List <Permission> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Permission"), Encoding.UTF8))); Console.WriteLine("Table:Permission created success!"); } else { Console.WriteLine("Table:Permission already exists..."); } #endregion #region Role if (!await myContext.Db.Queryable <Role>().AnyAsync()) { myContext.GetEntityDB <Role>().InsertRange(JsonHelper.ParseFormByJson <List <Role> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Role"), Encoding.UTF8))); Console.WriteLine("Table:Role created success!"); } else { Console.WriteLine("Table:Role already exists..."); } #endregion #region RoleModulePermission if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().InsertRange(JsonHelper.ParseFormByJson <List <RoleModulePermission> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "RoleModulePermission"), Encoding.UTF8))); Console.WriteLine("Table:RoleModulePermission created success!"); } else { Console.WriteLine("Table:RoleModulePermission already exists..."); } #endregion #region Topic if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { myContext.GetEntityDB <Topic>().InsertRange(JsonHelper.ParseFormByJson <List <Topic> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Topic"), Encoding.UTF8))); Console.WriteLine("Table:Topic created success!"); } else { Console.WriteLine("Table:Topic already exists..."); } #endregion #region TopicDetail if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().InsertRange(JsonHelper.ParseFormByJson <List <TopicDetail> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "TopicDetail"), Encoding.UTF8))); Console.WriteLine("Table:TopicDetail created success!"); } else { Console.WriteLine("Table:TopicDetail already exists..."); } #endregion #region UserRole if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().InsertRange(JsonHelper.ParseFormByJson <List <UserRole> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "UserRole"), Encoding.UTF8))); Console.WriteLine("Table:UserRole created success!"); } else { Console.WriteLine("Table:UserRole already exists..."); } #endregion #region sysUserInfo if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { myContext.GetEntityDB <sysUserInfo>().InsertRange(JsonHelper.ParseFormByJson <List <sysUserInfo> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "sysUserInfo"), Encoding.UTF8))); Console.WriteLine("Table:sysUserInfo created success!"); } else { Console.WriteLine("Table:sysUserInfo already exists..."); } #endregion Console.WriteLine("Done seeding database."); } Console.WriteLine(); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext) { try { // 注意!一定要手动先创建要给空的数据库 // 会覆盖,可以设置为true,来备份数据 // 如果生成过了,第二次,就不用再执行一遍了,注释掉该方法即可 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(UserRole)); // 后期单独处理某些表 //myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); //myContext.Db.CodeFirst.InitTables(typeof(Permission)); #region Advertisement if (!await myContext.Db.Queryable <Advertisement>().AnyAsync()) { myContext.GetEntityDB <Advertisement>().Insert( new Advertisement() { Createdate = DateTime.Now, Remark = "mark", Title = "good" }); } #endregion #region BlogArticle Guestbook if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { int bid = myContext.GetEntityDB <BlogArticle>().InsertReturnIdentity( new BlogArticle() { bsubmitter = "admins", btitle = "老张的哲学", bcategory = "技术博文", bcontent = "<p>1,ctrl+alt+delete 去修改密码</p><p>2、<span style='color: inherit; '>打开“服务器管理器”,选择“配置”-“本地用户和组”-“用户,</span><span style='color: inherit; '>右击administrator,选择“属性”,在“常规”选项中勾上“密码永不过期”,点击“应用”和“确定”。</span><span style='color: inherit; '><br></span></p><p><span style='color: inherit; '>3、</span><span style='color: inherit; '>在开始菜单中选择“管理工具”-“本地安全策略”,</span><span style='color: inherit; '>选择“安全策略”-“账户策略”-“密码策略”,编辑“密码最短使用期限”和“密码最长使用期限”,天数设置为0,即永不过期,点击“确定”即可。</span><span style='color: inherit; '><br></span></p><p><br></p>", btraffic = 1, bcommentNum = 0, bUpdateTime = DateTime.Now, bCreateTime = DateTime.Now }); if (bid > 0) { if (!await myContext.Db.Queryable <Guestbook>().AnyAsync()) { myContext.GetEntityDB <Guestbook>().Insert( new Guestbook() { blogId = bid, createdate = DateTime.Now, username = "******", phone = "110", QQ = "100", body = "很不错", ip = "127.0.0.1", isshow = true, }); } } } #endregion #region Module int mid = 0; if (!await myContext.Db.Queryable <Module>().AnyAsync()) { mid = myContext.GetEntityDB <Module>().InsertReturnIdentity( new Module() { IsDeleted = false, Name = "values的接口信息", LinkUrl = "/api/values", OrderSort = 1, IsMenu = false, Enabled = true, CreateTime = DateTime.Now, }); } #endregion #region Role int rid = 0; if (!await myContext.Db.Queryable <Role>().AnyAsync()) { rid = myContext.GetEntityDB <Role>().InsertReturnIdentity( new Role() { IsDeleted = false, Name = "Admin", Description = "我是一个admin管理员", OrderSort = 1, CreateTime = DateTime.Now, Enabled = true, ModifyTime = DateTime.Now }); } #endregion #region RoleModulePermission if (mid > 0 && rid > 0) { if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().Insert( new RoleModulePermission() { IsDeleted = false, RoleId = rid, ModuleId = mid, CreateTime = DateTime.Now, ModifyTime = DateTime.Now }); } } #endregion #region sysUserInfo int uid = 0; if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { uid = myContext.GetEntityDB <sysUserInfo>().InsertReturnIdentity( new sysUserInfo() { uLoginName = "admins", uLoginPWD = "admins", uRealName = "admins", uStatus = 0, uCreateTime = DateTime.Now, uUpdateTime = DateTime.Now, uLastErrTime = DateTime.Now, uErrorCount = 0 }); } #endregion #region UserRole if (uid > 0 && rid > 0) { if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().Insert( new UserRole() { IsDeleted = false, UserId = uid, RoleId = rid, CreateTime = DateTime.Now, ModifyTime = DateTime.Now }); } } #endregion #region Topic TopicDetail if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { int tid = myContext.GetEntityDB <Topic>().InsertReturnIdentity( new Topic() { tLogo = "/Upload/20180626/95445c8e288e47e3af7a180b8a4cc0c7.jpg", tName = "《罗马人的故事》", tDetail = "这是一个荡气回肠的故事", tIsDelete = false, tRead = 0, tCommend = 0, tGood = 0, tCreatetime = DateTime.Now, tUpdatetime = DateTime.Now, tAuthor = "laozhang" }); if (tid > 0) { if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().Insert( new TopicDetail() { TopicId = tid, tdLogo = "/Upload/20180627/7548de20944c45d48a055111b5a6c1b9.jpg", tdName = "第一章 罗马的诞生 第一节 传说的年代", tdContent = "<p>第一节 传说的年代</p><p>每个民族都有自己的神话传说。大概希望知道本民族的来源是个很自然的愿望吧。但这是一个难题,因为这几乎不可能用科学的方法来解释清楚。不过所有的民族都没有这样的奢求。他们只要有一个具有一定的条理性,而又能振奋其民族精神的浪漫故事就行,别抬杠,象柏杨那样将中国的三皇五帝都来个科学分析,来评论他们的执政之优劣是大可不必的。</p><p>对於罗马人,他们有一个和特洛伊城的陷落相关的传说。</p><p>位於小亚细亚西岸的繁荣的城市特洛伊,在遭受了阿加美农统帅的希腊联军的十年围攻之後,仍未陷落。希腊联军於是留下一个巨大的木马後假装撤兵。特洛伊人以为那是希腊联军留给自己的礼物,就将它拉入城内。</p><p>当庆祝胜利的狂欢结束,特洛伊人满怀对明日的和平生活的希望熟睡後,藏在木马内的希腊士兵一个又一个地爬了出来。就在这天夜里,特洛伊城便在火光和叫喊中陷落了。全城遭到大屠杀 ,幸免於死的人全都沦为奴隶。混乱之中只有特洛伊国王的驸马阿伊尼阿斯带着老父,儿子等数人在女神维娜斯的帮助下成功地逃了出来。这驸马爷乃是女神维娜斯与凡人男子之间的儿子,女神维娜斯不忍心看着自己的儿子被希腊士兵屠杀 。</p><p>这阿驸马一行人分乘几条船,离开了火光冲天的特洛伊城。在女神维娜斯的指引下,浪迹地中海,最後在意大利西岸登陆。当地的国王看上了阿伊尼阿斯并把自己的女儿嫁给了他。他又是驸马了,与他的新妻过起了幸福的生活。难民们也安定了下来。</p><p>阿伊尼阿斯死後,跟随他逃难来的儿子继承了王位。新王在位三十年後,离开了这块地方,到台伯河(Tiber)下游建了一个新城亚尔巴龙迦城。这便是罗马城的前身了。</p><p>罗马人自古相信罗马城是公元前731年4月21日由罗莫路和勒莫(Romulus and Remus)建设的。而这两个孪生兄弟是从特洛伊逃出的阿伊尼阿斯的子孙。後来,罗马人接触了希腊文化後才知道特洛伊的陷落是在公元前十三世纪,老早的事了。罗马人好象并没有对这段空白有任何烦恼,随手编出一串传说,把那空白给填补了。反正传说这事荒唐一点的更受欢迎。经过了一堆搞不清谁是谁的王的统治,出现了一个什麽王的公主。</p><p>公主的叔父在篡夺了王位後,为了防止公主结婚生子威胁自己的王位,便任命未婚的公主为巫女。这是主管祭神的职位,象修女一样不得结婚。</p><p>不巧一日这美丽的公主在祭事的空余,来到小河边午睡。也是合当有事,被过往的战神玛尔斯(Mars)一见钟情。这玛尔斯本是靠挑起战争混饭吃的,但也常勾引 良家妇女。这天战神也没错过机会,立刻由天而降,与公主一试云雨。据说战神的技术特神,公主还没来得及醒便完事升天去了。後来公主生了一双胞胎,起名罗莫路和勒莫。</p><p>叔父闻知此事大怒,将公主投入大牢,又把那双胞胎放在篮子里抛入台伯河,指望那篮子漂入大海将那双胞胎淹死。类似的故事在旧约圣经里也有,那是关於摩西的事,好象这类传说在当地十分流行。</p><p>再说那兄弟俩的篮子被河口附近茂密的灌木丛钩住而停了下来,俩人哭声引来的一只过路的母狼。意大利的狼都带点慈悲心,不但没吃了俩人当点心,还用自己的奶去喂他们,这才救了俩小命。</p><p>不过,总是由狼养活也没法交 待,於是又一日一放羊的在这地盘上溜哒,发现了兄弟俩,将他们抱了回去扶养成人 。据说现在这一带仍有许多放羊的。</p><p>兄弟俩长大後成了这一带放羊人的头,在与别的放羊人的圈子的打斗中不断地扩展自己的势力范围。圈子大了,情报也就多了,终于有一天,罗莫路和勒莫知道了自己身事。</p><p>兄弟俩就带着手下的放羊人呼啸着去打破了亚尔巴龙迦城,杀了那国王,将王位又交 还给了自己祖父。他们的母亲似乎已经死在了大牢里。但兄弟俩也没在亚尔巴龙迦城多住,他们认为亚尔巴龙迦城位於山地,虽然易守难攻,却不利发展。加上兄弟俩是在台伯河的下游长大的,所以便回到原地,建了个新城。除了手下的放羊人又加上了附近的放羊人和农民。</p><p>消灭了共同的敌人後,兄弟俩的关系开始恶化。有人说是为了新城的命名,有人说是为了新城的城址,也有人说是为了争夺王位。兄弟俩於是分割统治,各占一小山包。但纷争又开始了,勒莫跳过了罗莫路为表示势力范围而挖的沟。对於这种侵犯他人权力的行为,罗莫路大义灭亲地在自己兄弟的後脑上重重地来了一锄头,勒莫便被灭了。</p><p></p><p>於是这城便以罗莫路的名字命名为罗马,这就是公元前731年4月21日的事了,到现在这天仍是意大利的节日,罗马人会欢天喜地的庆祝罗莫路杀了自己的…不,是庆祝罗马建城。王位当然也得由罗莫路来坐,一切问题都没了。这时四年一度的奥林匹克运动会在希腊已经开了六回,罗马也从传说的时代走出,近入了历史时代。</p><p><br></p>", tdDetail = "第一回", tdIsDelete = false, tdRead = 1, tdCommend = 0, tdGood = 0, tdCreatetime = DateTime.Now, tdUpdatetime = DateTime.Now, tdTop = 0, }); } } } #endregion } catch (Exception ex) { } }
/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <param name="WebRootPath"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext, string WebRootPath) { try { if (string.IsNullOrEmpty(WebRootPath)) { throw new Exception("获取wwwroot路径时,异常!"); } SeedDataFolder = Path.Combine(WebRootPath, SeedDataFolder); SeedDataFolderMini = Path.Combine(WebRootPath, SeedDataFolderMini); Console.WriteLine("Database config data init..."); Console.WriteLine($"Is multi-DataBase: {Appsettings.app(new string[] { "MutiDBEnabled" })}"); Console.WriteLine($"Is CQRS: {Appsettings.app(new string[] { "CQRSEnabled" })}"); Console.WriteLine(); if (Appsettings.app(new string[] { "MutiDBEnabled" }).ObjToBool()) { Console.WriteLine($"Master DB Type: {MyContext.DbType}"); Console.WriteLine($"Master DB ConnectString: {MyContext.ConnectionString}"); Console.WriteLine(); var slaveIndex = 0; BaseDBConfig.MutiConnectionString.Item1.Where(x => x.ConnId != MainDb.CurrentDbConnId).ToList().ForEach(m => { slaveIndex++; Console.WriteLine($"Slave{slaveIndex} DB ID: {m.ConnId}"); Console.WriteLine($"Slave{slaveIndex} DB Type: {m.DbType}"); Console.WriteLine($"Slave{slaveIndex} DB ConnectString: {m.Conn}"); }); } else if (Appsettings.app(new string[] { "CQRSEnabled" }).ObjToBool()) { Console.WriteLine($"Master DB Type: {MyContext.DbType}"); Console.WriteLine($"Master DB ConnectString: {MyContext.ConnectionString}"); Console.WriteLine(); var slaveIndex = 0; BaseDBConfig.MutiConnectionString.Item2.Where(x => x.ConnId != MainDb.CurrentDbConnId).ToList().ForEach(m => { slaveIndex++; Console.WriteLine($"Slave{slaveIndex} DB ID: {m.ConnId}"); Console.WriteLine($"Slave{slaveIndex} DB Type: {m.DbType}"); Console.WriteLine($"Slave{slaveIndex} DB ConnectString: {m.Conn}"); }); } else { Console.WriteLine("DB Type: " + MyContext.DbType); Console.WriteLine("DB ConnectString: " + MyContext.ConnectionString); } Console.WriteLine(); Console.WriteLine("Create Database..."); // 创建数据库 myContext.Db.DbMaintenance.CreateDatabase(); ConsoleHelper.WriteSuccessLine($"Database created successfully!"); Console.WriteLine("Create Tables..."); // 创建表 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(TasksQz), typeof(UserRole)); // 后期单独处理某些表 // myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); ConsoleHelper.WriteSuccessLine($"Tables created successfully!"); Console.WriteLine(); if (Appsettings.app(new string[] { "AppSettings", "SeedDBDataEnabled" }).ObjToBool()) { Console.WriteLine("Seeding database data..."); #region BlogArticle if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { myContext.GetEntityDB <BlogArticle>().InsertRange(JsonHelper.ParseFormByJson <List <BlogArticle> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "BlogArticle"), Encoding.UTF8))); Console.WriteLine("Table:BlogArticle created success!"); } else { Console.WriteLine("Table:BlogArticle already exists..."); } #endregion #region Module if (!await myContext.Db.Queryable <Module>().AnyAsync()) { myContext.GetEntityDB <Module>().InsertRange(JsonHelper.ParseFormByJson <List <Module> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Module"), Encoding.UTF8))); Console.WriteLine("Table:Module created success!"); } else { Console.WriteLine("Table:Module already exists..."); } #endregion #region Permission if (!await myContext.Db.Queryable <Permission>().AnyAsync()) { myContext.GetEntityDB <Permission>().InsertRange(JsonHelper.ParseFormByJson <List <Permission> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Permission"), Encoding.UTF8))); Console.WriteLine("Table:Permission created success!"); } else { Console.WriteLine("Table:Permission already exists..."); } #endregion #region Role if (!await myContext.Db.Queryable <Role>().AnyAsync()) { myContext.GetEntityDB <Role>().InsertRange(JsonHelper.ParseFormByJson <List <Role> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Role"), Encoding.UTF8))); Console.WriteLine("Table:Role created success!"); } else { Console.WriteLine("Table:Role already exists..."); } #endregion #region RoleModulePermission if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().InsertRange(JsonHelper.ParseFormByJson <List <RoleModulePermission> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "RoleModulePermission"), Encoding.UTF8))); Console.WriteLine("Table:RoleModulePermission created success!"); } else { Console.WriteLine("Table:RoleModulePermission already exists..."); } #endregion #region Topic if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { myContext.GetEntityDB <Topic>().InsertRange(JsonHelper.ParseFormByJson <List <Topic> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "Topic"), Encoding.UTF8))); Console.WriteLine("Table:Topic created success!"); } else { Console.WriteLine("Table:Topic already exists..."); } #endregion #region TopicDetail if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().InsertRange(JsonHelper.ParseFormByJson <List <TopicDetail> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "TopicDetail"), Encoding.UTF8))); Console.WriteLine("Table:TopicDetail created success!"); } else { Console.WriteLine("Table:TopicDetail already exists..."); } #endregion #region UserRole if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().InsertRange(JsonHelper.ParseFormByJson <List <UserRole> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "UserRole"), Encoding.UTF8))); Console.WriteLine("Table:UserRole created success!"); } else { Console.WriteLine("Table:UserRole already exists..."); } #endregion #region sysUserInfo if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { myContext.GetEntityDB <sysUserInfo>().InsertRange(JsonHelper.ParseFormByJson <List <sysUserInfo> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "sysUserInfo"), Encoding.UTF8))); Console.WriteLine("Table:sysUserInfo created success!"); } else { Console.WriteLine("Table:sysUserInfo already exists..."); } #endregion #region TasksQz if (!await myContext.Db.Queryable <TasksQz>().AnyAsync()) { myContext.GetEntityDB <TasksQz>().InsertRange(JsonHelper.ParseFormByJson <List <TasksQz> >(FileHelper.ReadFile(string.Format(SeedDataFolder, "TasksQz"), Encoding.UTF8))); Console.WriteLine("Table:TasksQz created success!"); } else { Console.WriteLine("Table:TasksQz already exists..."); } #endregion ConsoleHelper.WriteSuccessLine($"Done seeding database!"); } Console.WriteLine(); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext) { try { // 如果生成过了,第二次,就不用再执行一遍了,注释掉该方法即可 // 自动创建数据库,注意版本是 sugar 5.x 版本的 myContext.Db.DbMaintenance.CreateDatabase(); // 创建表 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(UserRole)); // 后期单独处理某些表 //myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); //myContext.Db.CodeFirst.InitTables(typeof(Permission)); //myContext.Db.CodeFirst.InitTables(typeof(Advertisement)); Console.WriteLine("Database:WMBlog created success!"); Console.WriteLine(); Console.WriteLine("Seeding database..."); #region BlogArticle if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { myContext.GetEntityDB <BlogArticle>().InsertRange(JsonHelper.ParseFormByJson <List <BlogArticle> >(GetNetData.Get(string.Format(GitJsonFileFormat, "BlogArticle")))); Console.WriteLine("Table:BlogArticle created success!"); } else { Console.WriteLine("Table:BlogArticle already exists..."); } #endregion #region Module if (!await myContext.Db.Queryable <Module>().AnyAsync()) { myContext.GetEntityDB <Module>().InsertRange(JsonHelper.ParseFormByJson <List <Module> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Module")))); Console.WriteLine("Table:Module created success!"); } else { Console.WriteLine("Table:Module already exists..."); } #endregion #region Permission if (!await myContext.Db.Queryable <Permission>().AnyAsync()) { myContext.GetEntityDB <Permission>().InsertRange(JsonHelper.ParseFormByJson <List <Permission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Permission")))); Console.WriteLine("Table:Permission created success!"); } else { Console.WriteLine("Table:Permission already exists..."); } #endregion #region Role if (!await myContext.Db.Queryable <Role>().AnyAsync()) { myContext.GetEntityDB <Role>().InsertRange(JsonHelper.ParseFormByJson <List <Role> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Role")))); Console.WriteLine("Table:Role created success!"); } else { Console.WriteLine("Table:Role already exists..."); } #endregion #region RoleModulePermission if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().InsertRange(JsonHelper.ParseFormByJson <List <RoleModulePermission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "RoleModulePermission")))); Console.WriteLine("Table:RoleModulePermission created success!"); } else { Console.WriteLine("Table:RoleModulePermission already exists..."); } #endregion #region Topic if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { myContext.GetEntityDB <Topic>().InsertRange(JsonHelper.ParseFormByJson <List <Topic> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Topic")))); Console.WriteLine("Table:Topic created success!"); } else { Console.WriteLine("Table:Topic already exists..."); } #endregion #region TopicDetail if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().InsertRange(JsonHelper.ParseFormByJson <List <TopicDetail> >(GetNetData.Get(string.Format(GitJsonFileFormat, "TopicDetail")))); Console.WriteLine("Table:TopicDetail created success!"); } else { Console.WriteLine("Table:TopicDetail already exists..."); } #endregion #region UserRole if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().InsertRange(JsonHelper.ParseFormByJson <List <UserRole> >(GetNetData.Get(string.Format(GitJsonFileFormat, "UserRole")))); Console.WriteLine("Table:UserRole created success!"); } else { Console.WriteLine("Table:UserRole already exists..."); } #endregion #region sysUserInfo if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { myContext.GetEntityDB <sysUserInfo>().InsertRange(JsonHelper.ParseFormByJson <List <sysUserInfo> >(GetNetData.Get(string.Format(GitJsonFileFormat, "sysUserInfo")))); Console.WriteLine("Table:sysUserInfo created success!"); } else { Console.WriteLine("Table:sysUserInfo already exists..."); } #endregion Console.WriteLine("Done seeding database."); Console.WriteLine(); } catch (Exception ex) { throw new Exception("1、注意要先创建空的数据库\n2、" + ex.Message); } }
/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext) { try { // 如果生成过了,第二次,就不用再执行一遍了,注释掉该方法即可 #region 自动创建数据库暂停服务 // 自动创建数据库,注意版本是 sugar 5.x 版本的 // 注意:这里还是有些问题,比如使用mysql的话,如果通过这个方法创建空数据库,字符串不是utf8的,所以还是手动创建空的数据库吧,然后设置数据库为utf-8,我再和作者讨论一下。 // 但是使用SqlServer 和 Sqlite 好像没有这个问题。 //myContext.Db.DbMaintenance.CreateDatabase(); #endregion // 创建表 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(UserRole)); // 后期单独处理某些表 //myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); //myContext.Db.CodeFirst.InitTables(typeof(Permission)); //myContext.Db.CodeFirst.InitTables(typeof(Advertisement)); Console.WriteLine("Database:WMBlog created success!"); Console.WriteLine(); if (Appsettings.app(new string[] { "AppSettings", "SeedDBDataEnabled" }).ObjToBool()) { Console.WriteLine("Seeding database..."); #region BlogArticle if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { myContext.GetEntityDB <BlogArticle>().InsertRange(JsonHelper.ParseFormByJson <List <BlogArticle> >(GetNetData.Get(string.Format(GitJsonFileFormat, "BlogArticle")))); Console.WriteLine("Table:BlogArticle created success!"); } else { Console.WriteLine("Table:BlogArticle already exists..."); } #endregion #region Module if (!await myContext.Db.Queryable <Module>().AnyAsync()) { myContext.GetEntityDB <Module>().InsertRange(JsonHelper.ParseFormByJson <List <Module> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Module")))); Console.WriteLine("Table:Module created success!"); } else { Console.WriteLine("Table:Module already exists..."); } #endregion #region Permission if (!await myContext.Db.Queryable <Permission>().AnyAsync()) { myContext.GetEntityDB <Permission>().InsertRange(JsonHelper.ParseFormByJson <List <Permission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Permission")))); Console.WriteLine("Table:Permission created success!"); } else { Console.WriteLine("Table:Permission already exists..."); } #endregion #region Role if (!await myContext.Db.Queryable <Role>().AnyAsync()) { myContext.GetEntityDB <Role>().InsertRange(JsonHelper.ParseFormByJson <List <Role> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Role")))); Console.WriteLine("Table:Role created success!"); } else { Console.WriteLine("Table:Role already exists..."); } #endregion #region RoleModulePermission if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().InsertRange(JsonHelper.ParseFormByJson <List <RoleModulePermission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "RoleModulePermission")))); Console.WriteLine("Table:RoleModulePermission created success!"); } else { Console.WriteLine("Table:RoleModulePermission already exists..."); } #endregion #region Topic if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { myContext.GetEntityDB <Topic>().InsertRange(JsonHelper.ParseFormByJson <List <Topic> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Topic")))); Console.WriteLine("Table:Topic created success!"); } else { Console.WriteLine("Table:Topic already exists..."); } #endregion #region TopicDetail if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().InsertRange(JsonHelper.ParseFormByJson <List <TopicDetail> >(GetNetData.Get(string.Format(GitJsonFileFormat, "TopicDetail")))); Console.WriteLine("Table:TopicDetail created success!"); } else { Console.WriteLine("Table:TopicDetail already exists..."); } #endregion #region UserRole if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().InsertRange(JsonHelper.ParseFormByJson <List <UserRole> >(GetNetData.Get(string.Format(GitJsonFileFormat, "UserRole")))); Console.WriteLine("Table:UserRole created success!"); } else { Console.WriteLine("Table:UserRole already exists..."); } #endregion #region sysUserInfo if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { myContext.GetEntityDB <sysUserInfo>().InsertRange(JsonHelper.ParseFormByJson <List <sysUserInfo> >(GetNetData.Get(string.Format(GitJsonFileFormat, "sysUserInfo")))); Console.WriteLine("Table:sysUserInfo created success!"); } else { Console.WriteLine("Table:sysUserInfo already exists..."); } #endregion Console.WriteLine("Done seeding database."); } Console.WriteLine(); } catch (Exception ex) { throw new Exception("1、注意要先创建空的数据库\n2、" + ex.Message); } }
/// <summary> /// 异步添加种子数据 /// </summary> /// <param name="myContext"></param> /// <returns></returns> public static async Task SeedAsync(MyContext myContext) { try { // 注意!一定要先手动创建一个【空的数据库】 // 如果生成过了,第二次,就不用再执行一遍了,注释掉该方法即可 myContext.CreateTableByEntity(false, typeof(Advertisement), typeof(BlogArticle), typeof(Guestbook), typeof(Module), typeof(ModulePermission), typeof(OperateLog), typeof(PasswordLib), typeof(Permission), typeof(Role), typeof(RoleModulePermission), typeof(sysUserInfo), typeof(Topic), typeof(TopicDetail), typeof(UserRole)); // 后期单独处理某些表 //myContext.Db.CodeFirst.InitTables(typeof(sysUserInfo)); //myContext.Db.CodeFirst.InitTables(typeof(Permission)); //myContext.Db.CodeFirst.InitTables(typeof(Advertisement)); #region BlogArticle if (!await myContext.Db.Queryable <BlogArticle>().AnyAsync()) { myContext.GetEntityDB <BlogArticle>().InsertRange(JsonHelper.ParseFormByJson <List <BlogArticle> >(GetNetData.Get(string.Format(GitJsonFileFormat, "BlogArticle")))); } #endregion #region Module if (!await myContext.Db.Queryable <Module>().AnyAsync()) { myContext.GetEntityDB <Module>().InsertRange(JsonHelper.ParseFormByJson <List <Module> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Module")))); } #endregion #region Permission if (!await myContext.Db.Queryable <Permission>().AnyAsync()) { myContext.GetEntityDB <Permission>().InsertRange(JsonHelper.ParseFormByJson <List <Permission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Permission")))); } #endregion #region Role if (!await myContext.Db.Queryable <Role>().AnyAsync()) { myContext.GetEntityDB <Role>().InsertRange(JsonHelper.ParseFormByJson <List <Role> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Role")))); } #endregion #region RoleModulePermission if (!await myContext.Db.Queryable <RoleModulePermission>().AnyAsync()) { myContext.GetEntityDB <RoleModulePermission>().InsertRange(JsonHelper.ParseFormByJson <List <RoleModulePermission> >(GetNetData.Get(string.Format(GitJsonFileFormat, "RoleModulePermission")))); } #endregion #region Topic if (!await myContext.Db.Queryable <Topic>().AnyAsync()) { myContext.GetEntityDB <Topic>().InsertRange(JsonHelper.ParseFormByJson <List <Topic> >(GetNetData.Get(string.Format(GitJsonFileFormat, "Topic")))); } #endregion #region TopicDetail if (!await myContext.Db.Queryable <TopicDetail>().AnyAsync()) { myContext.GetEntityDB <TopicDetail>().InsertRange(JsonHelper.ParseFormByJson <List <TopicDetail> >(GetNetData.Get(string.Format(GitJsonFileFormat, "TopicDetail")))); } #endregion #region UserRole if (!await myContext.Db.Queryable <UserRole>().AnyAsync()) { myContext.GetEntityDB <UserRole>().InsertRange(JsonHelper.ParseFormByJson <List <UserRole> >(GetNetData.Get(string.Format(GitJsonFileFormat, "UserRole")))); } #endregion #region sysUserInfo if (!await myContext.Db.Queryable <sysUserInfo>().AnyAsync()) { myContext.GetEntityDB <sysUserInfo>().InsertRange(JsonHelper.ParseFormByJson <List <sysUserInfo> >(GetNetData.Get(string.Format(GitJsonFileFormat, "sysUserInfo")))); } #endregion } catch (Exception ex) { throw new Exception("1、注意要先创建空的数据库\n2、" + ex.Message); } }