private SchemaTable getSchemaTable(DbDataReader reader) { SchemaTable schemaTable = new SchemaTable(); DataTable resultSchema = reader.GetSchemaTable(); foreach (DataRow row in resultSchema.Rows) { SchemaColumn schemaColumn = new SchemaColumn(); schemaTable.Add(schemaColumn); schemaColumn.ColumnName = getDataRowColumn(row, "ColumnName") as string; schemaColumn.ColumnOrdinal = Convert.ToInt32(getDataRowColumn(row, "ColumnOrdinal")); schemaColumn.ColumnSize = Convert.ToInt32(getDataRowColumn(row, "ColumnSize")); schemaColumn.NumericPrecision = Convert.ToInt32(getDataRowColumn(row, "NumericPrecision")); schemaColumn.NumericScale = Convert.ToInt32(getDataRowColumn(row, "NumericScale")); schemaColumn.ProviderType = Convert.ToInt32(getDataRowColumn(row, "ProviderType")); schemaColumn.IsLong = (getDataRowColumn(row, "IsLong") as bool?).GetValueOrDefault(); schemaColumn.AllowDBNull = (getDataRowColumn(row, "AllowDBNull") as bool?).GetValueOrDefault(); schemaColumn.IsReadOnly = (getDataRowColumn(row, "IsReadOnly") as bool?).GetValueOrDefault(); schemaColumn.IsRowVersion = (getDataRowColumn(row, "IsRowVersion") as bool?).GetValueOrDefault(); schemaColumn.IsUnique = (getDataRowColumn(row, "IsUnique") as bool?).GetValueOrDefault(); schemaColumn.IsKey = (getDataRowColumn(row, "IsKey") as bool?).GetValueOrDefault(); schemaColumn.IsAutoIncrement = (getDataRowColumn(row, "IsAutoIncrement") as bool?).GetValueOrDefault(); schemaColumn.BaseTableName = getDataRowColumn(row, "BaseTableName") as string; schemaColumn.BaseColumnName = getDataRowColumn(row, "BaseColumnName") as string; /////////////////////////// object obj = getDataRowColumn(row, "DataType"); Type t = Type.GetType(obj.ToString()); XmlTypeMapping xmlMapping = getQualifiedNameForSystemType(t); schemaColumn.DataType = xmlMapping.XsdTypeName; /* * Console.WriteLine("-------------------"); * Console.WriteLine(xmlMapping.ElementName); * Console.WriteLine(xmlMapping.Namespace); * Console.WriteLine(xmlMapping.TypeFullName); * Console.WriteLine(xmlMapping.TypeName); * Console.WriteLine(xmlMapping.XsdElementName); * Console.WriteLine(xmlMapping.XsdTypeName); * Console.WriteLine(xmlMapping.XsdTypeNamespace); */ /* * XmlSerializer xs = new XmlSerializer(t); * var sb = new StringBuilder(); * using (var writer = new StringWriter(sb)) * { * xs.Serialize(writer, obj); * writer.Close(); * } * * //Xmltype * Console.WriteLine(sb.ToString()); */ } return(schemaTable); }