/// <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));
        }