コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
                 }
             }
         }
     }
 }