Example #1
0
        /// <summary>
        /// Build schema table from entity mapping
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entityMapping"></param>
        /// <param name="additionColumns">Additional columns not defined in mapper</param>
        /// <returns></returns>
        public static DataTable BuildSchemaTableFromEntityMapping <T>(IEntityMapper <T> entityMapping,
                                                                      params SchemaMappingColumn[] additionColumns)
            where T : class
        {
            Expect.IsNotNull(entityMapping, nameof(entityMapping));
            var columns = new List <SchemaMappingColumn>();

            foreach (var fieldMapper in entityMapping.FieldMappers)
            {
                Type dataType    = fieldMapper.PropertyType;
                bool allowDbNull = !dataType.IsValueType;
                if (dataType.IsNullableType())
                {
                    dataType    = dataType.GetNullableBaseType();
                    allowDbNull = !dataType.IsValueType;
                }
                if (dataType.IsEnum)
                {
                    dataType = typeof(int);
                }
                var column = new SchemaMappingColumn(fieldMapper.FieldName, dataType, allowDbNull);
                columns.Add(column);
            }

            if (additionColumns != null)
            {
                columns.AddRange(additionColumns);
            }

            return(BuildSchemaTable(columns.ToArray()));
        }
Example #2
0
        private static void AddRow(DataTable table, SchemaMappingColumn column)
        {
            Expect.IsNotNull(table, nameof(table));
            Expect.IsNotNull(column, nameof(column));

            var row = table.NewRow();

            row["ColumnName"]  = column.ColumnName;
            row["DataType"]    = column.DataType;
            row["AllowDBNull"] = column.AllowDBNull;
            table.Rows.Add(row);
        }
        public void SortByName()
        {
            var entityMapper  = MappingFactory.CreateEntityMappingFromAnnonations <NotNullEntity>();
            var schemaTable   = DataSourceBuilder.BuildSchemaTableFromEntityMapping(entityMapper);
            var schemaMapping = new SchemaMapping();

            schemaMapping.Load(schemaTable);
            var columns = schemaMapping.Columns.ToArray();

            SchemaMappingColumn.SortByName(columns, "FID", "FIntProp", "FLongProp");

            Assert.AreEqual("FID", columns[0].ColumnName);
        }
Example #4
0
        private void SetEntity(SchemaMappingColumn[] additionalColumns, string[] sortNames, object[][] data)
        {
            additionalColumns = additionalColumns ?? new SchemaMappingColumn[0];
            var schemaMapping = DataSourceBuilder.BuildSchemaMappingFromEntityMapping(_mapper, additionalColumns);
            var columns       = schemaMapping.Columns.ToArray();

            SchemaMappingColumn.SortByName(columns, sortNames);
            var dataReader   = DataSourceBuilder.BuildDataReader(columns, data);
            var entityReader = new EntityReader <NotNullEntity>(_mapper, dataReader.GetSchemaTable());

            dataReader.Read();
            entityReader.SetEntity(dataReader, _entity);
        }
Example #5
0
        public void SetEntity_AllFields_WithAdditional()
        {
            var additionColumn = new SchemaMappingColumn("FOtherProp", typeof(string), true);
            var columnNames    = new[] { "FID", "FIntProp", "FShortProp", "FLongProp", "FFloatProp", "FDoubleProp",
                                         "FDecimalProp", "FBoolProp", "FStringProp", "FDateTimeProp", "FBinaryProp", "FGuidProp", "FEnumProp", "FOtherProp" };
            var data = new object[][]
            {
                new object[] { 1, 1, (short)1, 1L, 1F, 1D, 1M, true, "abc", DateTime.Now, new byte[0], Guid.NewGuid(), (int)FileMode.CreateNew, "other" },
            };

            SetEntity(new[] { additionColumn }, columnNames, data);

            AssertEntityProperties(data[0]);
        }
        public void ClrType(Type dataType, bool allowDbNull, Type clrType)
        {
            var column = new SchemaMappingColumn("column", dataType, allowDbNull);

            Assert.AreEqual(clrType, column.ClrType);
        }