Example #1
0
        public static TableSchema Schema(this IDataReader reader)
        {
            var schemaTable = reader.GetSchemaTable();

            if (schemaTable == null)
            {
                return(null);
            }
            var colNames = schemaTable.Columns.OfType <DataColumn>().Select(c => c.ColumnName).ToHashSet();
            var cols     = schemaTable.Rows.Cast <DataRow>().Select(r => {
                var col = new ColumnSchema();
                foreach (var prop in col.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
                {
                    if (colNames.Contains(prop.Name))
                    {
                        col.SetPropValue(prop.Name, r[prop.Name]);
                    }
                }
                return(col);
            });

            return(new() {
                Columns = cols.ToArray()
            });
        }