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; }
public PropertyBuilderConventions(PetaPocoConventionScannerSettings scannerSettings) { _scannerSettings = scannerSettings; }
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; }
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; }
public PetaPocoConventionScanner(PetaPocoConventionScannerSettings scannerSettings) { _scannerSettings = scannerSettings; }