public Task <ApiResult> AddAsync(SystemInfoAllDTO model) { return(factory.GetGrain <IDataSyncSettingAllStateGrain>(System.Guid.Empty).AddAsync(model)); }
public async Task <ApiResult> AddAsync(SystemInfoAllDTO model) { //参数校验 if (!model.IsValid(out string exMsg)) { return(ApiResultUtil.IsFailed(exMsg)); } if (State.SystemInfos.Any(m => m.SystemName == model.SystemName || m.DbConnection == model.DbConnection)) { return(ApiResultUtil.IsFailed("系统或数据库配置已存在!")); } long systemId = await this.GrainFactory.GetGrain <IUtcUID>(GrainIdKey.UtcUIDGrainKey).NewLongID(); var systemInfoDO = this.ObjectMapper.Map <SystemInfoDO>(model); systemInfoDO.Id = systemId; systemInfoDO.CreateDate = System.DateTime.Now; systemInfoDO.ModityDate = System.DateTime.Now; List <TableInfoDO> tableInfos = new List <TableInfoDO>(); List <ColumnInfoDO> columnInfos = new List <ColumnInfoDO>(); foreach (var table in model.Tables) { if (tableInfos.Any(mbox => mbox.TableName == table.TableName)) { return(ApiResultUtil.IsFailed($"表名称【{table.TableName}】重复!")); } long tableId = await this.GrainFactory.GetGrain <IUtcUID>(GrainIdKey.UtcUIDGrainKey).NewLongID(); var tableInfoDO = this.ObjectMapper.Map <TableInfoDO>(table); tableInfoDO.SystemId = systemId; tableInfoDO.Id = tableId; tableInfoDO.CreateDate = System.DateTime.Now; tableInfoDO.ModityDate = System.DateTime.Now; foreach (var column in table.Columns) { if (columnInfos.Any(mbox => mbox.TableId == tableId && mbox.SelfColumn == column.SelfColumn)) { return(ApiResultUtil.IsFailed($"列名称【{column.SelfColumn}】重复!")); } long columnId = await this.GrainFactory.GetGrain <IUtcUID>(GrainIdKey.UtcUIDGrainKey).NewLongID(); var columnInfo = this.ObjectMapper.Map <ColumnInfoDO>(column); columnInfo.TableId = tableId; columnInfo.Id = columnId; columnInfo.CreateDate = System.DateTime.Now; columnInfo.ModityDate = System.DateTime.Now; columnInfos.Add(columnInfo); } tableInfos.Add(tableInfoDO); } var bRet = await _systemInfoRepository.BeginTransactionAsync(async transaction => { var result = await _systemInfoRepository.AddAsync(systemInfoDO); _tableInfoRepository.Transaction = transaction; result &= await _tableInfoRepository.AddAsync(tableInfos.ToArray()); _columnInfoRepository.Transaction = transaction; result &= await _columnInfoRepository.AddAsync(columnInfos.ToArray()); transaction.Commit(); return(result); }); var state = this.State; state.SystemInfos.Add(systemInfoDO); state.TableInfos.AddRange(tableInfos); state.ColumnInfos.AddRange(columnInfos); //刷新缓存 var groupCodes = tableInfos.Select(mbox => mbox.GroupCode).Distinct(); await RefrshGroupState(groupCodes.ToList()); await this.Persist(Kaneko.Core.Contract.ProcessAction.Create, state); return(bRet ? ApiResultUtil.IsSuccess() : ApiResultUtil.IsFailed("数据保存失败!")); }