Пример #1
0
        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);
        }
Пример #2
0
 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));
 }
Пример #3
0
 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]));
 }
Пример #4
0
        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);
        }
Пример #5
0
            private bool ReadRow()
            {
                if (!_consumed)
                {
                    return(true);
                }

                if (!Result._reader.Read())
                {
                    return(false);
                }

                _columns  = new ColumnValueSet(Result._reader);
                _consumed = false;
                return(true);
            }
Пример #6
0
        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);
        }
Пример #7
0
 private static object MapScalar(MappingConfig config, Type type, ColumnValueSet columns)
 {
     return(config.FromDb(type, columns.Single().Value));
 }
Пример #8
0
 public object FromQuery(ColumnValueSet columns, LogicalColumn meta, MappingConfig mapping)
 => Enum.Parse(meta.Member.PropertyType, columns[meta.PhysicalColumns[0].Name].ToString());