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