public static object[] Map(MappingConfig config, Type[] types, ColumnValueSet columns) { int offset = 0; var ret = new object[types.Length]; for (int i = 0; i < types.Length; ++i) { if (config.ScalarTypes.Contains(types[i])) { ret[i] = MapScalar(config, types[i], columns.GetRange(offset, 1)); offset += 1; } else { var table = Table.Get(types[i]); ret[i] = MapModel(config, table, columns.GetRange(offset, table.PhysicalColumns.Length)); offset += table.PhysicalColumns.Length; } } if (offset != columns.Count) { throw PtixedException.InvalidMapping(); } return(ret); }
public static object Map(MappingConfig config, Type type, ColumnValueSet columns) { if (config.ScalarTypes.Contains(type)) { return(MapScalar(config, type, columns)); } return(MapModel(config, Table.Get(type), columns)); }
public object FromQuery(ColumnValueSet columns, MappingConfig mapping) { if (Converter != null) { return(Converter.FromQuery(columns, this, mapping)); } return(mapping.FromDb(Member.PropertyType, columns[PhysicalColumns[0].Name])); }
public object FromQuery(ColumnValueSet columns, LogicalColumn meta, MappingConfig mapping) { var accessor = Table.Get(meta.Member.PropertyType); var ret = accessor.CreateNew(); foreach (var column in accessor.LogicalColumns) { accessor[ret, column] = column.FromQuery(columns, mapping); } return(ret); }
private bool ReadRow() { if (!_consumed) { return(true); } if (!Result._reader.Read()) { return(false); } _columns = new ColumnValueSet(Result._reader); _consumed = false; return(true); }
private static object MapModel(MappingConfig config, Table table, ColumnValueSet columns) { if (table.PrimaryKey != null) { if (table.PrimaryKey.PhysicalColumns.All(x => columns[x.Name] == null)) { return(null); } } var model = table.CreateNew(); foreach (var column in table.LogicalColumns) { table[model, column] = column.FromQuery(columns, config); } return(model); }
private static object MapScalar(MappingConfig config, Type type, ColumnValueSet columns) { return(config.FromDb(type, columns.Single().Value)); }
public object FromQuery(ColumnValueSet columns, LogicalColumn meta, MappingConfig mapping) => Enum.Parse(meta.Member.PropertyType, columns[meta.PhysicalColumns[0].Name].ToString());