private IEnumerable <object> ReadReader(IDataLinqDataReader reader, TableMetadata table) { foreach (var column in table.PrimaryKeyColumns) { yield return(reader.ReadColumn(column)); } }
public static object ReadColumn(this IDataLinqDataReader reader, Column column) { var ordinal = reader.GetOrdinal(column.DbName); object value; if (column.ValueProperty.CsType == typeof(DateOnly)) { value = reader.GetDateOnly(ordinal); } else { value = reader.GetValue(ordinal); } if (value is DBNull) { return(null); } else if (column.ValueProperty.CsNullable) { return(Convert.ChangeType(value, column.ValueProperty.CsType.GetNullableConversionType())); } else if (column.DbType == "enum") { return(1); //TODO: Fix enum support } else if (value.GetType() != column.ValueProperty.CsType) { return(Convert.ChangeType(value, column.ValueProperty.CsType)); } return(value); }
private (Dictionary <string, object> data, int size) ReadReader(IDataLinqDataReader reader, TableMetadata table) { var data = new Dictionary <string, object>(); var size = 0; foreach (var column in table.Columns) { var value = reader.ReadColumn(column); size += GetSize(column, value); data.Add(column.DbName, value); } return(data, size); }
public PrimaryKeys(IDataLinqDataReader reader, TableMetadata table) { Data = ReadReader(reader, table).ToArray(); }
//public RowData(Dictionary<string, object> data, TableMetadata table) //{ // Data = data; // Table = table; //} public RowData(IDataLinqDataReader reader, TableMetadata table) { Table = table; (Data, Size) = ReadReader(reader, table); }