private static void ConfigureDependentKeys(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest) { DebugCheck.NotNull(databaseMapping); DebugCheck.NotNull(providerManifest); foreach (var foreignKeyConstraint in databaseMapping.Database.EntityTypes.SelectMany(t => t.ForeignKeyBuilders)) { foreignKeyConstraint .DependentColumns .Each( (c, i) => { var primitivePropertyConfiguration = c.GetConfiguration() as PrimitivePropertyConfiguration; if ((primitivePropertyConfiguration != null) && (primitivePropertyConfiguration.ColumnType != null)) { return; } var principalColumn = foreignKeyConstraint.PrincipalTable.KeyProperties.ElementAt(i); c.PrimitiveType = providerManifest.GetStoreTypeFromName(principalColumn.TypeName); c.CopyFrom(principalColumn); }); } }
private static void ConfigureDependentKeys(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest) { DebugCheck.NotNull(databaseMapping); DebugCheck.NotNull(providerManifest); // PERF: this code written this way since it's part of a hotpath, consider its performance when refactoring. See codeplex #2298. var entityTypesList = databaseMapping.Database.EntityTypes as IList<EntityType> ?? databaseMapping.Database.EntityTypes.ToList(); // ReSharper disable ForCanBeConvertedToForeach for (var entityTypesListIterator = 0; entityTypesListIterator < entityTypesList.Count; ++entityTypesListIterator) { var entityType = entityTypesList[entityTypesListIterator]; var foreignKeyBuilders = entityType.ForeignKeyBuilders as IList<ForeignKeyBuilder> ?? entityType.ForeignKeyBuilders.ToList(); for (var foreignKeyBuildersIterator = 0; foreignKeyBuildersIterator < foreignKeyBuilders.Count; ++foreignKeyBuildersIterator) { var foreignKeyConstraint = foreignKeyBuilders[foreignKeyBuildersIterator]; var dependentColumns = foreignKeyConstraint.DependentColumns; var dependentColumnsList = dependentColumns as IList<EdmProperty> ?? dependentColumns.ToList(); for (var i = 0; i < dependentColumnsList.Count; ++i) { var c = dependentColumnsList[i]; var primitivePropertyConfiguration = c.GetConfiguration() as PrimitivePropertyConfiguration; if ((primitivePropertyConfiguration != null) && (primitivePropertyConfiguration.ColumnType != null)) { continue; } var principalColumn = foreignKeyConstraint.PrincipalTable.KeyProperties.ElementAt(i); c.PrimitiveType = providerManifest.GetStoreTypeFromName(principalColumn.TypeName); c.CopyFrom(principalColumn); } } } // ReSharper restore ForCanBeConvertedToForeach }