private static void CopyDefaultDiscriminator( MappingFragment fromFragment, MappingFragment toFragment) { var discriminatorColumn = fromFragment.GetDefaultDiscriminator(); if (discriminatorColumn != null) { var discriminator = fromFragment.ColumnConditions .SingleOrDefault(cc => cc.Column == discriminatorColumn); if (discriminator != null) { toFragment.AddDiscriminatorCondition(discriminator.Column, discriminator.Value); toFragment.SetDefaultDiscriminator(discriminator.Column); } } }
private static void CopyDefaultDiscriminator( MappingFragment fromFragment, MappingFragment toFragment) { EdmProperty discriminatorColumn = fromFragment.GetDefaultDiscriminator(); if (discriminatorColumn == null) { return; } ConditionPropertyMapping conditionPropertyMapping = fromFragment.ColumnConditions.SingleOrDefault <ConditionPropertyMapping>((Func <ConditionPropertyMapping, bool>)(cc => cc.Column == discriminatorColumn)); if (conditionPropertyMapping == null) { return; } toFragment.AddDiscriminatorCondition(conditionPropertyMapping.Column, conditionPropertyMapping.Value); toFragment.SetDefaultDiscriminator(conditionPropertyMapping.Column); }
private static MappingFragment FindConditionTypeMappingFragment( EntitySet tableSet, MappingFragment propertiesTypeMappingFragment, EntityTypeMapping conditionTypeMapping) { EntityType table = tableSet.ElementType; MappingFragment mappingFragment = conditionTypeMapping.MappingFragments.SingleOrDefault <MappingFragment>((Func <MappingFragment, bool>)(x => x.Table == table)); if (mappingFragment == null) { mappingFragment = EntityMappingOperations.CreateTypeMappingFragment(conditionTypeMapping, propertiesTypeMappingFragment, tableSet); mappingFragment.SetIsConditionOnlyFragment(true); if (propertiesTypeMappingFragment.GetDefaultDiscriminator() != null) { mappingFragment.SetDefaultDiscriminator(propertiesTypeMappingFragment.GetDefaultDiscriminator()); propertiesTypeMappingFragment.RemoveDefaultDiscriminatorAnnotation(); } } return(mappingFragment); }
private static void GenerateDiscriminators(DbDatabaseMapping databaseMapping) { foreach (EntitySetMapping entitySetMapping in databaseMapping.GetEntitySetMappings()) { if (entitySetMapping.EntityTypeMappings.Count <EntityTypeMapping>() > 1) { EdmProperty edmProperty = new EdmProperty("Discriminator", databaseMapping.ProviderManifest.GetStoreType(DatabaseMappingGenerator.DiscriminatorTypeUsage)) { Nullable = false, DefaultValue = (object)"(Undefined)" }; entitySetMapping.EntityTypeMappings.First <EntityTypeMapping>().MappingFragments.Single <MappingFragment>().Table.AddColumn(edmProperty); foreach (EntityTypeMapping entityTypeMapping in entitySetMapping.EntityTypeMappings) { if (!entityTypeMapping.EntityType.Abstract) { MappingFragment mappingFragment = entityTypeMapping.MappingFragments.Single <MappingFragment>(); mappingFragment.SetDefaultDiscriminator(edmProperty); mappingFragment.AddDiscriminatorCondition(edmProperty, (object)entityTypeMapping.EntityType.Name); } } } } }