/// <summary> /// Create tables and after add fields /// </summary> /// <param name="tableModels"></param> /// <param name="tenantId"></param> /// <param name="schema"></param> /// <returns></returns> public async Task SynchronizeEntitiesByBeforeCreateTables(IEnumerable <SynchronizeTableViewModel> tableModels, Guid?tenantId, string schema = null) { var tables = new Dictionary <TableModel, SynchronizeTableViewModel>(); foreach (var tableModel in tableModels) { var table = new TableModel { Name = tableModel.Name, EntityType = schema ?? tableModel.Schema, Description = tableModel.Description, IsSystem = tableModel.IsSystem, IsPartOfDbContext = tableModel.IsStaticFromEntityFramework, TenantId = tenantId }; _context.Table.Add(table); var dbResult = await _context.SaveAsync(); if (!dbResult.IsSuccess) { continue; } var response = _tablesService.CreateSqlTable(table, _connectionString); if (response.Result) { tables.Add(table, tableModel); } } foreach (var table in tables) { await SyncEntityFieldsAsync(table.Value, table.Key); } }
public async Task <IActionResult> Create(CreateTableViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var entityType = await Context.EntityTypes.FirstOrDefaultAsync(x => x.Id == model.SelectedTypeId); if (entityType == null) { return(View(model)); } var newTable = new CreateTableViewModel { Name = model.Name, EntityType = GearSettings.DEFAULT_ENTITY_SCHEMA, //entityType.Name, Description = model.Description, TenantId = CurrentUserTenantId, IsCommon = model.IsCommon }; var table = newTable.Adapt <TableModel>(); await Context.Table.AddAsync(table); var dbResult = await Context.SaveAsync(); if (dbResult.IsSuccess) { var response = _tablesService.CreateSqlTable(table, ConnectionString); if (response.Result) { if (!table.IsCommon) { var tenants = _organizationService.GetAllTenants().Where(x => x.MachineName != GearSettings.DEFAULT_ENTITY_SCHEMA).ToList(); foreach (var tenant in tenants) { var tenantConfTable = table; tenantConfTable.EntityType = tenant.MachineName; _tablesService.CreateSqlTable(tenantConfTable, ConnectionString); } } return(RedirectToAction("Edit", "Table", new { id = table.Id, tab = "one" })); } } else { ModelState.AppendResultModelErrors(dbResult.Errors); return(View(model)); } return(View(model)); }