public static EdmProperty RemoveDefaultDiscriminatorCondition( this MappingFragment entityTypeMappingFragment) { EdmProperty defaultDiscriminator = entityTypeMappingFragment.GetDefaultDiscriminator(); if (defaultDiscriminator != null && entityTypeMappingFragment.ColumnConditions.Any <ConditionPropertyMapping>()) { entityTypeMappingFragment.ClearConditions(); } entityTypeMappingFragment.RemoveDefaultDiscriminatorAnnotation(); return(defaultDiscriminator); }
public static EdmProperty RemoveDefaultDiscriminatorCondition( this MappingFragment entityTypeMappingFragment) { DebugCheck.NotNull(entityTypeMappingFragment); var discriminatorColumn = entityTypeMappingFragment.GetDefaultDiscriminator(); if (discriminatorColumn != null && entityTypeMappingFragment.ColumnConditions.Any()) { Debug.Assert(entityTypeMappingFragment.ColumnConditions.Count() == 1); entityTypeMappingFragment.ClearConditions(); } entityTypeMappingFragment.RemoveDefaultDiscriminatorAnnotation(); return(discriminatorColumn); }
private void ConfigureConditions( DbDatabaseMapping databaseMapping, EntityType entityType, MappingFragment fragment, DbProviderManifest providerManifest) { if (!this.ValueConditions.Any <ValueConditionConfiguration>() && !this.NullabilityConditions.Any <NotNullConditionConfiguration>()) { return; } fragment.ClearConditions(); foreach (ValueConditionConfiguration valueCondition in this.ValueConditions) { valueCondition.Configure(databaseMapping, fragment, entityType, providerManifest); } foreach (NotNullConditionConfiguration nullabilityCondition in this.NullabilityConditions) { nullabilityCondition.Configure(databaseMapping, fragment, entityType); } }
private void ConfigureConditions( DbDatabaseMapping databaseMapping, EntityType entityType, MappingFragment fragment, DbProviderManifest providerManifest) { if (ValueConditions.Any() || NullabilityConditions.Any()) { fragment.ClearConditions(); foreach (var condition in ValueConditions) { condition.Configure(databaseMapping, fragment, entityType, providerManifest); } foreach (var condition in NullabilityConditions) { condition.Configure(databaseMapping, fragment, entityType); } } }
// <summary> // Makes sure only the required property mappings are present // </summary> private static void ConfigureTypeMappings( TableMapping tableMapping, Dictionary <EntityType, EntityTypeMapping> rootMappings, EntityType entityType, MappingFragment propertiesTypeMappingFragment, MappingFragment conditionTypeMappingFragment) { var existingPropertyMappings = new List <ColumnMappingBuilder>( propertiesTypeMappingFragment.ColumnMappings.Where(pm => !pm.ColumnProperty.IsPrimaryKeyColumn)); var existingConditions = new List <ConditionPropertyMapping>(propertiesTypeMappingFragment.ColumnConditions); foreach (var columnMapping in from cm in tableMapping.ColumnMappings from pm in cm.PropertyMappings where pm.EntityType == entityType select new { cm.Column, Property = pm }) { if (columnMapping.Property.PropertyPath != null && !IsRootTypeMapping( rootMappings, columnMapping.Property.EntityType, columnMapping.Property.PropertyPath)) { var existingPropertyMapping = propertiesTypeMappingFragment.ColumnMappings.SingleOrDefault( x => x.PropertyPath == columnMapping.Property.PropertyPath); if (existingPropertyMapping != null) { existingPropertyMappings.Remove(existingPropertyMapping); } else { existingPropertyMapping = new ColumnMappingBuilder(columnMapping.Column, columnMapping.Property.PropertyPath); propertiesTypeMappingFragment.AddColumnMapping(existingPropertyMapping); } } if (columnMapping.Property.Conditions != null) { foreach (var condition in columnMapping.Property.Conditions) { if (conditionTypeMappingFragment.ColumnConditions.Contains(condition)) { existingConditions.Remove(condition); } else if (!entityType.Abstract) { conditionTypeMappingFragment.AddConditionProperty(condition); } } } } // Any leftover mappings are removed foreach (var leftoverPropertyMapping in existingPropertyMappings) { propertiesTypeMappingFragment.RemoveColumnMapping(leftoverPropertyMapping); } foreach (var leftoverCondition in existingConditions) { conditionTypeMappingFragment.RemoveConditionProperty(leftoverCondition); } if (entityType.Abstract) { propertiesTypeMappingFragment.ClearConditions(); } }
private static void ConfigureTypeMappings( TableMapping tableMapping, Dictionary <EntityType, EntityTypeMapping> rootMappings, EntityType entityType, MappingFragment propertiesTypeMappingFragment, MappingFragment conditionTypeMappingFragment) { List <ColumnMappingBuilder> columnMappingBuilderList = new List <ColumnMappingBuilder>(propertiesTypeMappingFragment.ColumnMappings.Where <ColumnMappingBuilder>((Func <ColumnMappingBuilder, bool>)(pm => !pm.ColumnProperty.IsPrimaryKeyColumn))); List <ConditionPropertyMapping> conditionPropertyMappingList = new List <ConditionPropertyMapping>(propertiesTypeMappingFragment.ColumnConditions); foreach (var data in tableMapping.ColumnMappings.SelectMany((Func <ColumnMapping, IEnumerable <PropertyMappingSpecification> >)(cm => (IEnumerable <PropertyMappingSpecification>)cm.PropertyMappings), (cm, pm) => new { cm = cm, pm = pm }).Where(_param1 => _param1.pm.EntityType == entityType).Select(_param0 => new { Column = _param0.cm.Column, Property = _param0.pm })) { var columnMapping = data; if (columnMapping.Property.PropertyPath != null && !EntityMappingService.IsRootTypeMapping(rootMappings, columnMapping.Property.EntityType, columnMapping.Property.PropertyPath)) { ColumnMappingBuilder columnMappingBuilder1 = propertiesTypeMappingFragment.ColumnMappings.SingleOrDefault <ColumnMappingBuilder>((Func <ColumnMappingBuilder, bool>)(x => x.PropertyPath == columnMapping.Property.PropertyPath)); if (columnMappingBuilder1 != null) { columnMappingBuilderList.Remove(columnMappingBuilder1); } else { ColumnMappingBuilder columnMappingBuilder2 = new ColumnMappingBuilder(columnMapping.Column, columnMapping.Property.PropertyPath); propertiesTypeMappingFragment.AddColumnMapping(columnMappingBuilder2); } } if (columnMapping.Property.Conditions != null) { foreach (ConditionPropertyMapping condition in (IEnumerable <ConditionPropertyMapping>)columnMapping.Property.Conditions) { if (conditionTypeMappingFragment.ColumnConditions.Contains <ConditionPropertyMapping>(condition)) { conditionPropertyMappingList.Remove(condition); } else if (!entityType.Abstract) { conditionTypeMappingFragment.AddConditionProperty(condition); } } } } foreach (ColumnMappingBuilder columnMappingBuilder in columnMappingBuilderList) { propertiesTypeMappingFragment.RemoveColumnMapping(columnMappingBuilder); } foreach (ConditionPropertyMapping condition in conditionPropertyMappingList) { conditionTypeMappingFragment.RemoveConditionProperty(condition); } if (!entityType.Abstract) { return; } propertiesTypeMappingFragment.ClearConditions(); }