/// <summary> /// This method gets the StrLenNullMap from a DataFrameColumn Column. /// </summary> private int[] GetStrLenNullMap(DataFrameColumn column) { int[] colMap = new int[column.Length]; _handleList.Add(GCHandle.Alloc(colMap, GCHandleType.Pinned)); for (int rowNumber = 0; rowNumber < column.Length; ++rowNumber) { if (column[rowNumber] != null) { if (!DataTypeMap.ContainsKey(column.DataType)) { throw new NotImplementedException("Parameter type for " + column.DataType.ToString() + " has not been implemented yet"); } SqlDataType dataType = DataTypeMap[column.DataType]; switch (dataType) { case SqlDataType.DotNetChar: colMap[rowNumber] = ((string)column[rowNumber]).Length; break; default: colMap[rowNumber] = DataTypeSize[dataType]; break; } } else { colMap[rowNumber] = SQL_NULL_DATA; } } return(colMap); }
/// <summary> /// 字段复制 /// </summary> /// <param name="dest"></param> /// <returns></returns> protected override void CopyFrom(SimpleConfig dest) { base.CopyFrom(dest); var cfg = dest as SolutionConfig; if (cfg == null) { return; } DocFolder = cfg.DocFolder; //文档文件夹名称 SrcFolder = cfg.SrcFolder; //代码文件夹名称 RootPath = cfg.RootPath; //解决方案根路径 NameSpace = cfg.NameSpace; //解决方案命名空间 foreach (var item in cfg.DataTypeMap) //数据类型映射 { var child = new DataTypeMapConfig(); child.Copy(item); DataTypeMap.Add(child); } SolutionType = cfg.SolutionType; //解决方案类型 IdDataType = cfg.IdDataType; //主键数据类型 UserIdDataType = cfg.UserIdDataType; //用户标识数据类型 WorkView = cfg.WorkView; //工作视角 AdvancedView = cfg.AdvancedView; //高级视角 }
private void ReadFields(IBSharpClass c, XElement xml) { foreach (XElement e in xml.Elements()) { string name = e.Name.LocalName; if (DataTypeMap.ContainsKey(name) || name == "ref") { if (!string.IsNullOrWhiteSpace(e.Value)) { continue; } Field field = new Field().Setup(c, e, this); Fields[field.Name.ToLowerInvariant()] = field; } else { var reftype = c.Context.Get(name, c.Namespace); if (null != reftype) { Field field = new Field { ImplicitRef = true }.Setup(c, e, this); Fields[field.Name.ToLowerInvariant()] = field; } } } }
private static Type MapDataType(string dataType) { if (string.IsNullOrEmpty(dataType)) { return(typeof(object)); } //we need to remove numbers inside brackets to avoid cases like timestamp(N) or something else dataType = Regex.Replace(dataType, @"\((\d+)\)", string.Empty); Type value; return(DataTypeMap.TryGetValue(dataType, out value) ? value : typeof(object)); }
public async Task <IList <Table> > GetTablesAsync(CancellationToken cancellationToken) { var columnSchema = await GetColumnSchemaOfAllTablesAsync(cancellationToken).ConfigureAwait(false); var constraints = (await GetConstraintsOfAllTablesAsync(cancellationToken).ConfigureAwait(false)).ToList(); var schemas = columnSchema.GroupBy(x => x.TableSchema); return((from schema in schemas select schema.Select(g => g).ToList() into schemaColumns where schemaColumns.Any() let databaseName = schemaColumns.First().TableCatalog let schemaName = schemaColumns.First().TableSchema let columnSets = schemaColumns.GroupBy(x => x.TableName) from columnSet in columnSets where columnSet.Any() let tableName = columnSet.First().TableName let safeTableName = tableName.EscapeIllegalCsharpClassSymbols() let columns = columnSet.Select(g => g) .Select(x => { var dataType = DataTypeMap.ContainsKey(x.DataType) ? DataTypeMap[x.DataType] : DefaultDataType; if (x.IsNullable && !NonNullableDataTypes.Contains(dataType)) { dataType += NullableSymbol; } var safePropertyName = ToLegalPropertyName(x.ColumnName, tableName).EscapeIllegalCsharpClassSymbols(); return new Column(new Name(x.ColumnName, safePropertyName), x.OrdinalPosition, x.IsNullable, dataType); }) .ToList() let tableConstraints = constraints.Where(x => x.ConstraintCatalog == databaseName && x.TableSchema == schemaName && x.TableName.ActualName == tableName) .ToList() select new Table(databaseName, schemaName, new Name(tableName, safeTableName), columns, tableConstraints)).ToList()); }