public ActionResult <ApiResult <string> > CreateTableByView([FromForm] string ViewSql, [FromForm] int dbid, [FromForm] string className) { ApiResult <string> result = new ApiResult <string>() { IsSuccess = true }; var tableDb = base.GetTryDb(dbid); var dt = tableDb.Ado.GetDataTable(ViewSql); base.Check(dt.Rows.Count == 0, "SQL查询必须要有一条记录才能创建类"); CodeTable table = new CodeTable() { TableName = className, CreateTime = DateTime.Now, ClassName = className, IsLock = true, DbId = dbid, UpdateTime = DateTime.Now, Description = "数据源导入" }; var id = Db.Insertable(table).ExecuteReturnIdentity(); List <CodeColumns> cols = new List <CodeColumns>(); var listtypes = CodeTypeDb.GetList(); foreach (System.Data.DataColumn item in dt.Columns) { CodeColumns columns = new CodeColumns() { CodeTableId = id, ClassProperName = item.ColumnName, DbColumnName = item.ColumnName, CodeType = listtypes.FirstOrDefault(it => it.CSharepType.Equals(item.DataType.Name, StringComparison.OrdinalIgnoreCase) || it.DbType.Any(y => y.Name.Equals(item.DataType.Name, StringComparison.OrdinalIgnoreCase)))?.Name }; if (item.DataType.Name.ToLower() == "int32") { columns.CodeType = listtypes.Where(it => it.CSharepType == "int").First().Name; } if (item.DataType.Name.ToLower() == "int16") { columns.CodeType = listtypes.Where(it => it.CSharepType == "short").First().Name; } if (item.DataType.Name.ToLower() == "int64") { columns.CodeType = listtypes.Where(it => it.CSharepType == "long").First().Name; } if (string.IsNullOrEmpty(columns.CodeType)) { columns.CodeType = listtypes.Where(it => it.CSharepType == "string").First().Name; } cols.Add(columns); } Db.Insertable(cols).ExecuteReturnIdentity(); result.IsSuccess = true; result.Data = result.Message = "创建成功"; return(result); }
private static string GetType(CodeColumns column) { string type = "string"; if (IsSpecialType(column)) { type = Regex.Match(column.ClassProperName, @"\[(.+)\]").Groups[1].Value; } return(type); }
private static bool IsSpecialType(CodeColumns column) { return(Regex.IsMatch(column.ClassProperName, @"\[.+\]")); }