예제 #1
0
        private static ConventionScannerSettings ProcessSettings(Action <IConventionScanner> scanner)
        {
            var defaultScannerSettings = new ConventionScannerSettings
            {
                PrimaryKeysAutoIncremented = x => true,
                PrimaryKeysNamed           = x => "ID",
                TablesNamed              = x => x.Name,
                DbColumnsNamed           = x => x.Name,
                PersistedTypesBy         = x => null,
                AliasNamed               = x => null,
                DbColumnTypesAs          = x => null,
                ResultPropertiesWhere    = x => false,
                VersionPropertiesWhere   = x => false,
                VersionPropertyTypeAs    = x => VersionColumnType.Number,
                ComputedPropertiesWhere  = x => false,
                ComputedPropertyTypeAs   = x => ComputedColumnType.Always,
                ForceDateTimesToUtcWhere = x => true,
                ReferencePropertiesWhere = x => x.GetMemberInfoType().IsAClass() && ReflectionUtils.GetCustomAttributes(x, typeof(ReferenceAttribute)).Any(),
                ComplexPropertiesWhere   = x => x.GetMemberInfoType().IsAClass() && ReflectionUtils.GetCustomAttributes(x, typeof(ComplexMappingAttribute)).Any(),
                ReferenceDbColumnsNamed  = x => x.Name + "ID",
                SequencesNamed           = x => null,
                UseOutputClauseWhere     = x => false,
                SerializedWhere          = x => ReflectionUtils.GetCustomAttributes(x, typeof(SerializedColumnAttribute)).Any(),
                DbColumnWhere            = x => ReflectionUtils.GetCustomAttributes(x, typeof(ColumnAttribute)).Any(),
                Lazy = false
            };

            scanner.Invoke(new ConventionScanner(defaultScannerSettings));
            return(defaultScannerSettings);
        }
예제 #2
0
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types  = typesOverride ?? FindTypes(scannerSettings);
            var config = new Dictionary <Type, TypeDefinition>();

            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement   = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey      = scannerSettings.PrimaryKeysNamed(type),
                    TableName       = scannerSettings.TablesNamed(type),
                    SequenceName    = scannerSettings.SequencesNamed(type),
                    ExplicitColumns = true
                };

                foreach (var prop in ReflectionUtils.GetFieldsAndPropertiesForClasses(type))
                {
                    var column = new ColumnDefinition();
                    column.MemberInfo        = prop;
                    column.DbColumnName      = scannerSettings.PropertiesNamed(prop);
                    column.DbColumnAlias     = scannerSettings.AliasNamed(prop);
                    column.IgnoreColumn      = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(prop));
                    column.DbColumnType      = scannerSettings.DbColumnTypesAs(prop);
                    column.ResultColumn      = scannerSettings.ResultPropertiesWhere(prop);
                    column.ComputedColumn    = scannerSettings.ComputedPropertiesWhere(prop);
                    column.VersionColumn     = scannerSettings.VersionPropertiesWhere(prop);
                    column.VersionColumnType = scannerSettings.VersionColumnTypeAs(prop);
                    column.ForceUtc          = scannerSettings.ForceDateTimesToUtcWhere(prop);

                    if (!pocoDefn.ColumnConfiguration.ContainsKey(prop.Name))
                    {
                        pocoDefn.ColumnConfiguration.Add(prop.Name, column);
                    }
                }

                config.Add(type, pocoDefn);
            }

            MergeOverrides(config, scannerSettings.MappingOverrides);

            //if (scannerSettings.OverrideWithAttributes)
            //{
            //    MergeAttributeOverrides(config);
            //}

            var pocoMappings = new Mappings {
                Config = config
            };

            return(pocoMappings);
        }
예제 #3
0
        private static IEnumerable <Type> FindTypes(ConventionScannerSettings scannerSettings)
        {
            if (scannerSettings.TheCallingAssembly)
            {
                scannerSettings.Assemblies.Add(FindTheCallingAssembly());
            }

            var types = scannerSettings.Assemblies
                        .SelectMany(x => x.GetExportedTypes())
                        .Where(x => scannerSettings.IncludeTypes.All(y => y.Invoke(x)))
                        .Where(x => !x.IsNested && !typeof(Map <>).IsAssignableFrom(x) && !typeof(Mappings).IsAssignableFrom(x));

            return(types);
        }
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types = typesOverride ?? FindTypes(scannerSettings);
            var config = new Dictionary<Type, TypeDefinition>();
            
            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey = scannerSettings.PrimaryKeysNamed(type),
                    TableName = scannerSettings.TablesNamed(type),
                    SequenceName = scannerSettings.SequencesNamed(type),
                    ExplicitColumns = true
                };

                foreach (var prop in ReflectionUtils.GetFieldsAndPropertiesForClasses(type))
                {
                    var column = new ColumnDefinition();
                    column.MemberInfo = prop;
                    column.DbColumnName = scannerSettings.PropertiesNamed(prop);
                    column.DbColumnAlias = scannerSettings.AliasNamed(prop);
                    column.IgnoreColumn = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(prop));
                    column.DbColumnType = scannerSettings.DbColumnTypesAs(prop);
                    column.ResultColumn = scannerSettings.ResultPropertiesWhere(prop);
                    column.ComputedColumn = scannerSettings.ComputedPropertiesWhere(prop);
                    column.VersionColumn = scannerSettings.VersionPropertiesWhere(prop);
                    column.VersionColumnType = scannerSettings.VersionColumnTypeAs(prop);
                    column.ForceUtc = scannerSettings.ForceDateTimesToUtcWhere(prop);

                    if (!pocoDefn.ColumnConfiguration.ContainsKey(prop.Name))
                        pocoDefn.ColumnConfiguration.Add(prop.Name, column);
                }

                config.Add(type, pocoDefn);
            }

            MergeOverrides(config, scannerSettings.MappingOverrides);

            //if (scannerSettings.OverrideWithAttributes)
            //{
            //    MergeAttributeOverrides(config);
            //}

            var pocoMappings = new Mappings {Config = config};
            return pocoMappings;
        }
예제 #5
0
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types  = typesOverride ?? FindTypes(scannerSettings);
            var config = new Dictionary <Type, TypeDefinition>();

            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement   = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey      = scannerSettings.PrimaryKeysNamed(type),
                    TableName       = scannerSettings.TablesNamed(type),
                    PersistedType   = scannerSettings.PersistedTypesBy(type),
                    SequenceName    = scannerSettings.SequencesNamed(type),
                    UseOutputClause = scannerSettings.UseOutputClauseWhere(type),
                    ExplicitColumns = true
                };

                foreach (var columnDefinition in GetColumnDefinitions(scannerSettings, type, new List <MemberInfo>()))
                {
                    var key = PocoColumn.GenerateKey(columnDefinition.MemberInfoChain);
                    if (!pocoDefn.ColumnConfiguration.ContainsKey(key))
                    {
                        pocoDefn.ColumnConfiguration.Add(key, columnDefinition);
                    }
                }

                config.Add(type, pocoDefn);
            }

            foreach (var mappingOverride in scannerSettings.MappingOverrides)
            {
                MergeOverrides(config, mappingOverride);
            }

            //if (scannerSettings.OverrideWithAttributes)
            //{
            //    MergeAttributeOverrides(config);
            //}

            var pocoMappings = new Mappings {
                Config = config
            };

            return(pocoMappings);
        }
예제 #6
0
        private static ConventionScannerSettings ProcessSettings(Action <IConventionScanner> scanner)
        {
            var defaultScannerSettings = new ConventionScannerSettings
            {
                PrimaryKeysAutoIncremented = x => true,
                PrimaryKeysNamed           = x => "ID",
                TablesNamed            = x => x.Name,
                PropertiesNamed        = x => x.Name,
                ResultPropertiesWhere  = x => false,
                VersionPropertiesWhere = x => false,
                SequencesNamed         = x => null,
                Lazy = false
            };

            scanner.Invoke(new ConventionScanner(defaultScannerSettings));
            return(defaultScannerSettings);
        }
예제 #7
0
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types = typesOverride ?? FindTypes(scannerSettings);
            var config = new Dictionary<Type, TypeDefinition>();

            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey = scannerSettings.PrimaryKeysNamed(type),
                    TableName = scannerSettings.TablesNamed(type),
                    PersistedType = scannerSettings.PersistedTypesBy(type),
                    SequenceName = scannerSettings.SequencesNamed(type),
                    UseOutputClause = scannerSettings.UseOutputClauseWhere(type),
                    ExplicitColumns = true
                };

                foreach (var columnDefinition in GetColumnDefinitions(scannerSettings, type, new List<MemberInfo>()))
                {
                    var key = PocoColumn.GenerateKey(columnDefinition.MemberInfoChain);
                    if (!pocoDefn.ColumnConfiguration.ContainsKey(key))
                        pocoDefn.ColumnConfiguration.Add(key, columnDefinition);
                }

                config.Add(type, pocoDefn);
            }

            foreach (var mappingOverride in scannerSettings.MappingOverrides)
            {
                MergeOverrides(config, mappingOverride);
            }

            //if (scannerSettings.OverrideWithAttributes)
            //{
            //    MergeAttributeOverrides(config);
            //}

            var pocoMappings = new Mappings {Config = config};
            return pocoMappings;
        }
예제 #8
0
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types = typesOverride ?? FindTypes(scannerSettings);

            var config = new Dictionary <Type, TypeDefinition>();

            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey    = scannerSettings.PrimaryKeysNamed(type),
                    TableName     = scannerSettings.TablesNamed(type),
                    SequenceName  = scannerSettings.SequencesNamed(type),
                };

                foreach (var prop in type.GetProperties())
                {
                    var column = new ColumnDefinition();
                    column.PropertyInfo  = prop;
                    column.DbColumnName  = scannerSettings.PropertiesNamed(prop);
                    column.IgnoreColumn  = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(prop));
                    column.ResultColumn  = scannerSettings.ResultPropertiesWhere(prop);
                    column.VersionColumn = scannerSettings.VersionPropertiesWhere(prop);
                    column.ForceUtc      = scannerSettings.ForceDateTimesToUtcWhere(prop);
                    pocoDefn.ColumnConfiguration.Add(prop.Name, column);
                }

                config.Add(type, pocoDefn);
            }

            MergeOverrides(config, scannerSettings.MappingOverrides);

            var pocoMappings = new Mappings {
                Config = config
            };

            return(pocoMappings);
        }
예제 #9
0
        private static ConventionScannerSettings ProcessSettings(Action <IConventionScanner> scanner)
        {
            var defaultScannerSettings = new ConventionScannerSettings
            {
                PrimaryKeysAutoIncremented = x => true,
                PrimaryKeysNamed           = x => "ID",
                TablesNamed              = x => x.Name,
                PropertiesNamed          = x => x.Name,
                AliasNamed               = x => null,
                DbColumnTypesAs          = x => null,
                ResultPropertiesWhere    = x => false,
                VersionPropertiesWhere   = x => false,
                VersionColumnTypeAs      = x => VersionColumnType.Number,
                ComputedPropertiesWhere  = x => false,
                ForceDateTimesToUtcWhere = x => true,
                SequencesNamed           = x => null,
                Lazy = false
            };

            scanner.Invoke(new ConventionScanner(defaultScannerSettings));
            return(defaultScannerSettings);
        }
        private static Mappings CreateMappings(ConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types = typesOverride ?? FindTypes(scannerSettings);

            var config = new Dictionary<Type, TypeDefinition>();

            foreach (var type in types)
            {
                var pocoDefn = new TypeDefinition(type)
                {
                    AutoIncrement = scannerSettings.PrimaryKeysAutoIncremented(type),
                    PrimaryKey = scannerSettings.PrimaryKeysNamed(type),
                    TableName = scannerSettings.TablesNamed(type),
                    SequenceName = scannerSettings.SequencesNamed(type),
                };

                foreach (var prop in type.GetProperties())
                {
                    var column = new ColumnDefinition();
                    column.PropertyInfo = prop;
                    column.DbColumnName = scannerSettings.PropertiesNamed(prop);
                    column.IgnoreColumn = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(prop));
                    column.ResultColumn = scannerSettings.ResultPropertiesWhere(prop);
                    column.VersionColumn = scannerSettings.VersionPropertiesWhere(prop);
                    column.ForceUtc = scannerSettings.ForceDateTimesToUtcWhere(prop);
                    pocoDefn.ColumnConfiguration.Add(prop.Name, column);
                }

                config.Add(type, pocoDefn);
            }

            MergeOverrides(config, scannerSettings.MappingOverrides);

            var pocoMappings = new Mappings {Config = config};
            return pocoMappings;
        }
예제 #11
0
 private static ConventionScannerSettings ProcessSettings(Action<IConventionScanner> scanner)
 {
     var defaultScannerSettings = new ConventionScannerSettings
     {
         PrimaryKeysAutoIncremented = x => true,
         PrimaryKeysNamed = x => "ID",
         TablesNamed = x => x.Name,
         PropertiesNamed = x => x.Name,
         AliasNamed = x => null,
         DbColumnTypesAs = x => null,
         ResultPropertiesWhere = x => false,
         VersionPropertiesWhere = x => false,
         ComputedPropertiesWhere = x => false,
         ForceDateTimesToUtcWhere = x => true,
         SequencesNamed = x => null,
         Lazy = false
     };
     scanner.Invoke(new ConventionScanner(defaultScannerSettings));
     return defaultScannerSettings;
 }
 public PropertyBuilderConventions(ConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }
예제 #13
0
        private static IEnumerable<Type> FindTypes(ConventionScannerSettings scannerSettings)
        {
            if (scannerSettings.TheCallingAssembly)
                scannerSettings.Assemblies.Add(FindTheCallingAssembly());

            var types = scannerSettings.Assemblies
                .SelectMany(x => x.GetExportedTypes())
                .Where(x => scannerSettings.IncludeTypes.All(y => y.Invoke(x)))
                .Where(x => !x.IsNested && !typeof (Map<>).IsAssignableFrom(x) && !typeof (Mappings).IsAssignableFrom(x));
            return types;
        }
예제 #14
0
 public ConventionScanner(ConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }
예제 #15
0
 public ConventionScanner(ConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }
예제 #16
0
        private static IEnumerable <ColumnDefinition> GetColumnDefinitions(ConventionScannerSettings scannerSettings, Type type, List <MemberInfo> memberInfos, bool isReferenceProperty = false)
        {
            var capturedMembers = memberInfos.ToArray();

            foreach (var member in ReflectionUtils.GetFieldsAndPropertiesForClasses(type))
            {
                var complexProperty   = scannerSettings.ComplexPropertiesWhere(member);
                var referenceProperty = scannerSettings.ReferencePropertiesWhere(member);
                var dbColumn          = scannerSettings.DbColumnWhere(member);

                if ((complexProperty || referenceProperty) && !dbColumn)
                {
                    if (capturedMembers.GroupBy(x => x.GetMemberInfoType()).Any(x => x.Count() >= 2))
                    {
                        continue;
                    }

                    var members = new List <MemberInfo>();
                    members.AddRange(capturedMembers);
                    members.Add(member);

                    var memberInfoType = member.GetMemberInfoType();
                    if (PocoDataBuilder.IsList(member))
                    {
                        memberInfoType = memberInfoType.GetGenericArguments().First();
                    }

                    var columnDefinitions = GetColumnDefinitions(scannerSettings, memberInfoType, members, referenceProperty).ToList();

                    foreach (var columnDefinition in columnDefinitions)
                    {
                        yield return(columnDefinition);
                    }

                    var referenceDbColumnsNamed = scannerSettings.ReferenceDbColumnsNamed(member);

                    yield return(new ColumnDefinition()
                    {
                        MemberInfoChain = capturedMembers.Concat(new[] { member }).ToArray(),
                        MemberInfo = member,
                        IsComplexMapping = complexProperty,
                        IsReferenceMember = referenceProperty,
                        ReferenceType = ReferenceType.None,
                        ReferenceMember = null,
                        ResultColumn = scannerSettings.ResultPropertiesWhere(member),
                        DbColumnName = referenceProperty ? referenceDbColumnsNamed : null,
                    });
                }
                else
                {
                    var columnDefinition = new ColumnDefinition();
                    columnDefinition.MemberInfoChain = capturedMembers.Concat(new[] { member }).ToArray();
                    columnDefinition.MemberInfo      = member;

                    var prefixProperty = isReferenceProperty ? Enumerable.Empty <string>() : capturedMembers.Select(x => scannerSettings.DbColumnsNamed(x));
                    columnDefinition.DbColumnName = string.Join(PocoData.Separator, prefixProperty.Concat(new[] { scannerSettings.DbColumnsNamed(member) }).ToArray());

                    columnDefinition.DbColumnAlias      = scannerSettings.AliasNamed(member);
                    columnDefinition.IgnoreColumn       = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(member));
                    columnDefinition.DbColumnType       = scannerSettings.DbColumnTypesAs(member);
                    columnDefinition.ResultColumn       = scannerSettings.ResultPropertiesWhere(member);
                    columnDefinition.ComputedColumn     = scannerSettings.ComputedPropertiesWhere(member);
                    columnDefinition.ComputedColumnType = scannerSettings.ComputedPropertyTypeAs(member);
                    columnDefinition.VersionColumn      = scannerSettings.VersionPropertiesWhere(member);
                    columnDefinition.VersionColumnType  = scannerSettings.VersionPropertyTypeAs(member);
                    columnDefinition.ForceUtc           = scannerSettings.ForceDateTimesToUtcWhere(member);
                    columnDefinition.Serialized         = scannerSettings.SerializedWhere(member);
                    yield return(columnDefinition);
                }
            }
        }
예제 #17
0
 private static ConventionScannerSettings ProcessSettings(Action<IConventionScanner> scanner)
 {
     var defaultScannerSettings = new ConventionScannerSettings
     {
         PrimaryKeysAutoIncremented = x => true,
         PrimaryKeysNamed = x => "ID",
         TablesNamed = x => x.Name,
         DbColumnsNamed = x => x.Name,
         PersistedTypesBy = x => null,
         AliasNamed = x => null,
         DbColumnTypesAs = x => null,
         ResultPropertiesWhere = x => false,
         VersionPropertiesWhere = x => false,
         VersionPropertyTypeAs = x => VersionColumnType.Number,
         ComputedPropertiesWhere = x => false,
         ComputedPropertyTypeAs = x => ComputedColumnType.Always,
         ForceDateTimesToUtcWhere = x => true,
         ReferencePropertiesWhere = x => x.GetMemberInfoType().IsAClass() && ReflectionUtils.GetCustomAttributes(x, typeof(ReferenceAttribute)).Any(),
         ComplexPropertiesWhere = x => x.GetMemberInfoType().IsAClass() && ReflectionUtils.GetCustomAttributes(x, typeof(ComplexMappingAttribute)).Any(),
         ReferenceDbColumnsNamed = x => x.Name + "ID",
         SequencesNamed = x => null,
         UseOutputClauseWhere = x => false,
         SerializedWhere = x => ReflectionUtils.GetCustomAttributes(x, typeof(SerializedColumnAttribute)).Any(),
         DbColumnWhere = x => ReflectionUtils.GetCustomAttributes(x, typeof(ColumnAttribute)).Any(),
         Lazy = false
     };
     scanner.Invoke(new ConventionScanner(defaultScannerSettings));
     return defaultScannerSettings;
 }
 public PropertyBuilderConventions(ConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }
예제 #19
0
        private static IEnumerable<ColumnDefinition> GetColumnDefinitions(ConventionScannerSettings scannerSettings, Type type, List<MemberInfo> memberInfos, bool isReferenceProperty = false)
        {
            var capturedMembers = memberInfos.ToArray();
            foreach (var member in ReflectionUtils.GetFieldsAndPropertiesForClasses(type))
            {
                var complexProperty = scannerSettings.ComplexPropertiesWhere(member);
                var referenceProperty = scannerSettings.ReferencePropertiesWhere(member);
                var dbColumn = scannerSettings.DbColumnWhere(member);

                if ((complexProperty || referenceProperty) && !dbColumn)
                {
                    if (capturedMembers.GroupBy(x => x.GetMemberInfoType()).Any(x => x.Count() >= 2))
                    {
                        continue;
                    }

                    var members = new List<MemberInfo>();
                    members.AddRange(capturedMembers);
                    members.Add(member);

                    var memberInfoType = member.GetMemberInfoType();
                    if (PocoDataBuilder.IsList(member))
                    {
                        memberInfoType = memberInfoType.GetGenericArguments().First();
                    }

                    var columnDefinitions = GetColumnDefinitions(scannerSettings, memberInfoType, members, referenceProperty).ToList();

                    foreach (var columnDefinition in columnDefinitions)
                    {
                        yield return columnDefinition;
                    }

                    var referenceDbColumnsNamed = scannerSettings.ReferenceDbColumnsNamed(member);

                    yield return new ColumnDefinition()
                    {
                        MemberInfoChain = capturedMembers.Concat(new[] { member }).ToArray(),
                        MemberInfo = member,
                        IsComplexMapping = complexProperty,
                        IsReferenceMember = referenceProperty,
                        ReferenceType = ReferenceType.None,
                        ReferenceMember = null,
                        ResultColumn = scannerSettings.ResultPropertiesWhere(member),
                        DbColumnName = referenceProperty ? referenceDbColumnsNamed : null,
                    };
                }
                else
                {
                    var columnDefinition = new ColumnDefinition();
                    columnDefinition.MemberInfoChain = capturedMembers.Concat(new[] {member}).ToArray();
                    columnDefinition.MemberInfo = member;

                    var prefixProperty = isReferenceProperty ? Enumerable.Empty<string>() : capturedMembers.Select(x => scannerSettings.DbColumnsNamed(x));
                    columnDefinition.DbColumnName = string.Join(PocoData.Separator, prefixProperty.Concat(new[] { scannerSettings.DbColumnsNamed(member) }).ToArray());

                    columnDefinition.DbColumnAlias = scannerSettings.AliasNamed(member);
                    columnDefinition.IgnoreColumn = scannerSettings.IgnorePropertiesWhere.Any(x => x.Invoke(member));
                    columnDefinition.DbColumnType = scannerSettings.DbColumnTypesAs(member);
                    columnDefinition.ResultColumn = scannerSettings.ResultPropertiesWhere(member);
                    columnDefinition.ComputedColumn = scannerSettings.ComputedPropertiesWhere(member);
                    columnDefinition.ComputedColumnType = scannerSettings.ComputedPropertyTypeAs(member);
                    columnDefinition.VersionColumn = scannerSettings.VersionPropertiesWhere(member);
                    columnDefinition.VersionColumnType = scannerSettings.VersionPropertyTypeAs(member);
                    columnDefinition.ForceUtc = scannerSettings.ForceDateTimesToUtcWhere(member);
                    columnDefinition.Serialized = scannerSettings.SerializedWhere(member);
                    yield return columnDefinition;
                }
            }
        }