private static void ConfigureDependentKeys(DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest) { DebugCheck.NotNull(databaseMapping); DebugCheck.NotNull(providerManifest); foreach (var foreignKeyConstraint in databaseMapping.Database.GetEntityTypes().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.DeclaredKeyProperties.ElementAt(i); c.PrimitiveType = providerManifest.GetStoreTypeFromName(principalColumn.TypeName); c.CopyFrom(principalColumn); }); } }
protected virtual void ConfigureColumn(EdmProperty column, EntityType table, DbProviderManifest providerManifest) { ConfigureColumnName(column, table); ConfigureAnnotations(column); if (!string.IsNullOrWhiteSpace(ColumnType)) { column.PrimitiveType = providerManifest.GetStoreTypeFromName(ColumnType); } if (ColumnOrder != null) { column.SetOrder(ColumnOrder.Value); } var storeType = providerManifest.GetStoreTypes() .SingleOrDefault(t => t.Name.Equals(column.TypeName, StringComparison.OrdinalIgnoreCase)); if (storeType != null) { storeType.FacetDescriptions.Each(f => Configure(column, f)); } column.SetConfiguration(this); }
private static void ConfigureDependentKeys( DbDatabaseMapping databaseMapping, DbProviderManifest providerManifest) { IList <EntityType> entityTypeList = databaseMapping.Database.EntityTypes as IList <EntityType> ?? (IList <EntityType>)databaseMapping.Database.EntityTypes.ToList <EntityType>(); for (int index1 = 0; index1 < entityTypeList.Count; ++index1) { EntityType entityType = entityTypeList[index1]; IList <ForeignKeyBuilder> foreignKeyBuilderList = entityType.ForeignKeyBuilders as IList <ForeignKeyBuilder> ?? (IList <ForeignKeyBuilder>)entityType.ForeignKeyBuilders.ToList <ForeignKeyBuilder>(); for (int index2 = 0; index2 < foreignKeyBuilderList.Count; ++index2) { ForeignKeyBuilder foreignKeyBuilder = foreignKeyBuilderList[index2]; IEnumerable <EdmProperty> dependentColumns = foreignKeyBuilder.DependentColumns; IList <EdmProperty> edmPropertyList = dependentColumns as IList <EdmProperty> ?? (IList <EdmProperty>)dependentColumns.ToList <EdmProperty>(); for (int index3 = 0; index3 < edmPropertyList.Count; ++index3) { EdmProperty edmProperty = edmPropertyList[index3]; System.Data.Entity.ModelConfiguration.Configuration.Properties.Primitive.PrimitivePropertyConfiguration configuration = edmProperty.GetConfiguration() as System.Data.Entity.ModelConfiguration.Configuration.Properties.Primitive.PrimitivePropertyConfiguration; if (configuration == null || configuration.ColumnType == null) { EdmProperty other = foreignKeyBuilder.PrincipalTable.KeyProperties.ElementAt <EdmProperty>(index3); edmProperty.PrimitiveType = providerManifest.GetStoreTypeFromName(other.TypeName); edmProperty.CopyFrom(other); } } } } }
internal virtual void Configure( EdmProperty column, EntityType table, DbProviderManifest providerManifest, bool allowOverride = false, bool fillFromExistingConfiguration = false) { DebugCheck.NotNull(column); DebugCheck.NotNull(table); DebugCheck.NotNull(providerManifest); var existingConfiguration = column.GetConfiguration() as PrimitivePropertyConfiguration; if (existingConfiguration != null) { var overridable = column.GetAllowOverride(); string errorMessage; if ((existingConfiguration.OverridableConfigurationParts & OverridableConfigurationParts.OverridableInSSpace) != OverridableConfigurationParts.OverridableInSSpace && !overridable && !allowOverride && !fillFromExistingConfiguration && !existingConfiguration.IsCompatible(this, inCSpace: false, errorMessage: out errorMessage)) { throw Error.ConflictingColumnConfiguration(column.Name, table.Name, errorMessage); } FillFrom(existingConfiguration, inCSpace: false); } ConfigureColumnName(column, table); if (!string.IsNullOrWhiteSpace(ColumnType)) { column.PrimitiveType = providerManifest.GetStoreTypeFromName(ColumnType); } if (ColumnOrder != null) { column.SetOrder(ColumnOrder.Value); } var storeType = providerManifest.GetStoreTypes() .SingleOrDefault(t => t.Name.Equals(column.TypeName, StringComparison.OrdinalIgnoreCase)); if (storeType != null) { storeType.FacetDescriptions.Each(f => Configure(column, f)); } column.SetConfiguration(this); column.SetAllowOverride(allowOverride); }
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 }
protected virtual void ConfigureColumn( EdmProperty column, EntityType table, DbProviderManifest providerManifest) { this.ConfigureColumnName(column, table); this.ConfigureAnnotations(column); if (!string.IsNullOrWhiteSpace(this.ColumnType)) { column.PrimitiveType = providerManifest.GetStoreTypeFromName(this.ColumnType); } if (this.ColumnOrder.HasValue) { column.SetOrder(this.ColumnOrder.Value); } PrimitiveType primitiveType = providerManifest.GetStoreTypes().SingleOrDefault <PrimitiveType>((Func <PrimitiveType, bool>)(t => t.Name.Equals(column.TypeName, StringComparison.OrdinalIgnoreCase))); if (primitiveType != null) { primitiveType.FacetDescriptions.Each <FacetDescription>((Action <FacetDescription>)(f => this.Configure(column, f))); } column.SetConfiguration((object)this); }