private void WriteSeedData(SeedDataEntity seedDataEntity) { //var baseDirectory = AppContext.BaseDirectory; //var filePath = Path.Combine(baseDirectory, "SeedData.json"); var filePath = Path.Combine(Directory.GetCurrentDirectory(), @"SeedData.json"); JObject jObject = JObject.Parse(JsonConvert.SerializeObject(seedDataEntity)); File.WriteAllText(filePath, JsonConvert.SerializeObject(jObject, Formatting.Indented)); }
/// <summary> /// 生成种子数据 /// </summary> public void GenerateSeedData() { IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Server=localhost; Port=3306; Database=Tenant1db; Uid=root; Pwd=000000; Charset=utf8mb4;") .Build(); var sysApiEntities = fsql.GetRepository <SysApiEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysConditionEntities = fsql.GetRepository <SysConditionEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysDictionaryDetailEntities = fsql.GetRepository <SysDictionaryDetailEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysDictionaryEntities = fsql.GetRepository <SysDictionaryEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysGroupEntities = fsql.GetRepository <SysGroupEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysPermissionEntities = fsql.GetRepository <SysPermissionEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysResourceEntities = fsql.GetRepository <SysResourceEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysRoleEntities = fsql.GetRepository <SysRoleEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysRPermissionConditionEntities = fsql.GetRepository <SysRPermissionConditionEntity>().Select.ToList(); var SysRPermissionGroupEntities = fsql.GetRepository <SysRPermissionGroupEntity>().Select.ToList(); var SysRPermissionRoleEntities = fsql.GetRepository <SysRPermissionRoleEntity>().Select.ToList(); var SysRResourceApiEntities = fsql.GetRepository <SysRResourceApiEntity>().Select.ToList(); var SysRRoleResourceEntities = fsql.GetRepository <SysRRoleResourceEntity>().Select.ToList(); var SysSettingEntities = fsql.GetRepository <SysSettingEntity>().Select.Where(x => x.IsDeleted == false).ToList(); var SysUserEntities = fsql.GetRepository <SysUserEntity>().Select.Where(x => x.IsDeleted == false).ToList(); SeedDataEntity seedDataEntity = new SeedDataEntity() { SysApiEntities = sysApiEntities, SysConditionEntities = SysConditionEntities, SysDictionaryDetailEntities = SysDictionaryDetailEntities, SysDictionaryEntities = SysDictionaryEntities, SysGroupEntities = SysGroupEntities, SysPermissionEntities = SysPermissionEntities, SysResourceEntities = SysResourceEntities, SysRoleEntities = SysRoleEntities, SysRPermissionConditionEntities = SysRPermissionConditionEntities, SysRPermissionGroupEntities = SysRPermissionGroupEntities, SysRPermissionRoleEntities = SysRPermissionRoleEntities, SysRResourceApiEntities = SysRResourceApiEntities, SysRRoleResourceEntities = SysRRoleResourceEntities, SysSettingEntities = SysSettingEntities, SysUserEntities = SysUserEntities }; WriteSeedData(seedDataEntity); fsql.Dispose(); }
protected void Submit() { if (!configForm.IsValid()) { return; } var systemDb = TenantItem.DbOptions.Where(x => x.Key.ToLower() == "system").FirstOrDefault(); if (systemDb == null) { _ = MessageBox.AlertAsync("找不到System数据库配置"); return; } try { Logs.Clear(); Logs.Add("保存配置 开始"); if (!WriteTenantSettings()) { _ = MessageBox.AlertAsync("配置保存失败"); return; } Logs.Add("保存配置 结束"); Logs.Add("创建数据连接对象 开始"); var dbType = (FreeSql.DataType)Enum.Parse(typeof(FreeSql.DataType), systemDb.DbType); var connStr = systemDb.ConnectionStrings.Where(x => x.UseType == DbUseType.Master).First().ConnectionString; IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(dbType, connStr) .Build(); DbConnection dbConnection = fsql.Ado.MasterPool.Get().Value; // 这儿验证 连接是否成功,这句代码可以不要,如果连接字符不变正确,为了提早发现(报异常) fsql.Aop.AuditValue += SyncDataAuditValue; Logs.Add("创建数据连接对象 结束"); Logs.Add("同步数据库结构 开始"); if (dbType == DataType.Oracle) { fsql.CodeFirst.IsSyncStructureToUpper = true; } fsql.CodeFirst.SyncStructure(new Type[] { typeof(SysApiEntity), // API typeof(SysConditionEntity), // 数据条件 相关功能暂未实现,表结构已设计 typeof(SysDictionaryDetailEntity), // 数据字典明细,相关功能暂未实现,表结构已设计 typeof(SysDictionaryEntity), // 数据字典主表,相关功能暂未实现,表结构已设计 typeof(SysGroupEntity), // 数据归属组 typeof(SysLoginLogEntity), // 登录日志 typeof(SysOperationLogEntity), // API访问日志 typeof(SysPermissionEntity), // 权限岗 typeof(SysResourceEntity), // 资源 typeof(SysRoleEntity), // 角色 typeof(SysRPermissionConditionEntity), // 权限岗 与 数据条件关系表,功能未实现 typeof(SysRPermissionGroupEntity), // 权限岗 与 数据组关系表 typeof(SysRPermissionRoleEntity), // 权限岗 与 角色关系表 typeof(SysRResourceApiEntity), // 资源 与 API关系表 typeof(SysRRoleResourceEntity), // 角色 与 资源关系表 typeof(SysSettingEntity), // 系统设置表,相关功能暂未实现,表结构已设计 typeof(SysUserEntity) // 用户表 }); Logs.Add("同步数据库结构 结束"); Logs.Add("种子数据初始化 开始"); using (var uow = fsql.CreateUnitOfWork()) using (var tran = uow.GetOrBeginTransaction()) { SeedDataEntity data = (new SeedData()).GetSeedData(); InitDtData(fsql, data.SysApiEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysConditionEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysDictionaryDetailEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysDictionaryEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysGroupEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysPermissionEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysResourceEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRoleEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRPermissionConditionEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRPermissionGroupEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRPermissionRoleEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRResourceApiEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysRRoleResourceEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysSettingEntities.ToArray(), tran).Wait(); InitDtData(fsql, data.SysUserEntities.ToArray(), tran).Wait(); uow.Commit(); } Logs.Add("种子数据初始化 结束"); fsql.Dispose(); // _ = MessageBox.AlertAsync("初始化成功"); } catch (Exception ex) { _ = MessageBox.AlertAsync(ex.Message); } }