コード例 #1
0
        private static PetaPocoMappings CreateMappings(PetaPocoConventionScannerSettings scannerSettings, Type[] typesOverride)
        {
            var types = typesOverride ?? FindTypes(scannerSettings);

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

            foreach (var type in types)
            {
                var petaPocoDefn = new PetaPocoTypeDefinition(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 PetaPocoColumnDefinition();
                    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);
                    petaPocoDefn.ColumnConfiguration.Add(prop.Name, column);
                }

                config.Add(type, petaPocoDefn);
            }

            MergeOverrides(config, scannerSettings.MappingOverrides);

            var petaPocoMappings = new PetaPocoMappings {Config = config};
            SetFactory(petaPocoMappings, null);
            return petaPocoMappings;
        }
コード例 #2
0
 public PropertyBuilderConventions(PetaPocoConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }
コード例 #3
0
        private static IEnumerable<Type> FindTypes(PetaPocoConventionScannerSettings 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 (PetaPocoMap<>).IsAssignableFrom(x) && !typeof (PetaPocoMappings).IsAssignableFrom(x));
            return types;
        }
コード例 #4
0
        private static PetaPocoConventionScannerSettings ProcessSettings(Action<IPetaPocoConventionScanner> scanner)
        {
            var defaultScannerSettings = new PetaPocoConventionScannerSettings
            {
                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 PetaPocoConventionScanner(defaultScannerSettings));
            return defaultScannerSettings;
        }
コード例 #5
0
 public PetaPocoConventionScanner(PetaPocoConventionScannerSettings scannerSettings)
 {
     _scannerSettings = scannerSettings;
 }