src/Misc/EFTools/EntityDesignModel/Commands/CreateMappingFragmentCommand.cs
/// <summary>
///     Creates a new MappingFragment in the existing EntityTypeMapping
///     based on another MappingFragment (fragToClone) in a different artifact.
///     All the other parameters are presumed to already exist in the same artifact
///     as the EntityTypeMapping.
/// </summary>
Creates a new MappingFragment in the existing EntityTypeMapping
based on another MappingFragment (fragToClone) in a different artifact.
All the other parameters are presumed to already exist in the same artifact
as the EntityTypeMapping.
Creates a new MappingFragment in the existing EntityTypeMapping based on another MappingFragment ( fragToClone ) in a different artifact . All the other parameters are presumed to already exist in the same artifact as the EntityTypeMapping .
internal static MappingFragment CloneMappingFragment(
            CommandProcessorContext cpc, MappingFragment fragToClone,
            EntityTypeMapping existingEntityTypeMapping, StorageEntitySet existingEntitySet)
        {
            var createFragmentCommand = new CreateMappingFragmentCommand(existingEntityTypeMapping, existingEntitySet);
            var cp = new CommandProcessor(cpc, createFragmentCommand);
            cp.Invoke();
            var frag = createFragmentCommand.MappingFragment;
            Debug.Assert(frag != null, "Could not locate or create the required mapping fragment");
            if (frag != null)
            {
                foreach (var sp in fragToClone.ScalarProperties())
                {
                    Property entityProperty = null;
                    if (sp.Name != null
                        && sp.Name.Target != null
                        && sp.Name.Target.LocalName != null
                        && sp.Name.Target.LocalName.Value != null)
                    {
                        entityProperty = ModelHelper.FindPropertyForEntityTypeMapping(
                            existingEntityTypeMapping, sp.Name.Target.LocalName.Value);
                        Debug.Assert(
                            entityProperty != null,
                            "Cannot find Property with name " + sp.Name.Target.LocalName.Value + " for EntityTypeMapping "
                            + existingEntityTypeMapping.ToPrettyString());
                    }
                    Property tableColumn = null;
                    if (frag.StoreEntitySet != null
                        && frag.StoreEntitySet.Target != null
                        && frag.StoreEntitySet.Target.EntityType != null
                        && frag.StoreEntitySet.Target.EntityType.Target != null
                        && sp.ColumnName != null
                        && sp.ColumnName.Target != null
                        && sp.ColumnName.Target.LocalName != null
                        && sp.ColumnName.Target.LocalName.Value != null)
                    {
                        tableColumn = ModelHelper.FindProperty(
                            frag.StoreEntitySet.Target.EntityType.Target, sp.ColumnName.Target.LocalName.Value);
                        Debug.Assert(
                            tableColumn != null,
                            "Cannot find Property with name " + sp.ColumnName.Target.LocalName.Value + " for EntityType "
                            + frag.StoreEntitySet.Target.EntityType.Target.ToPrettyString());
                    }
                    if (entityProperty != null
                        && tableColumn != null)
                    {
                        var createScalarCommand = new CreateFragmentScalarPropertyCommand(frag, entityProperty, tableColumn);
                        var cp2 = new CommandProcessor(cpc, createScalarCommand);
                        cp2.Invoke();
                    }
                }
            }
            return frag;
        }
internal static MappingFragment CloneMappingFragment ( CommandProcessorContext cpc , MappingFragment fragToClone , EntityTypeMapping existingEntityTypeMapping , StorageEntitySet existingEntitySet ) { var createFragmentCommand = new CreateMappingFragmentCommand ( existingEntityTypeMapping , existingEntitySet ) ; var cp = new CommandProcessor ( cpc , createFragmentCommand ) ; cp . Invoke ( ) ; var frag = createFragmentCommand . MappingFragment ; Debug . Assert ( frag != null , " " ) ; if ( frag != null ) { foreach ( var sp in fragToClone . ScalarProperties ( ) ) { Property entityProperty = null ; if ( sp . Name != null && sp . Name . Target != null && sp . Name . Target . LocalName != null && sp . Name . Target . LocalName . Value != null ) { entityProperty = ModelHelper . FindPropertyForEntityTypeMapping ( existingEntityTypeMapping , sp . Name . Target . LocalName . Value ) ; Debug . Assert ( entityProperty != null , " " + sp . Name . Target . LocalName . Value + " " + existingEntityTypeMapping . ToPrettyString ( ) ) ; } Property tableColumn = null ; if ( frag . StoreEntitySet != null && frag . StoreEntitySet . Target != null && frag . StoreEntitySet . Target . EntityType != null && frag . StoreEntitySet . Target . EntityType . Target != null && sp . ColumnName != null && sp . ColumnName . Target != null && sp . ColumnName . Target . LocalName != null && sp . ColumnName . Target . LocalName . Value != null ) { tableColumn = ModelHelper . FindProperty ( frag . StoreEntitySet . Target . EntityType . Target , sp . ColumnName . Target . LocalName . Value ) ; Debug . Assert ( tableColumn != null , " " + sp . ColumnName . Target . LocalName . Value + " " + frag . StoreEntitySet . Target . EntityType . Target . ToPrettyString ( ) ) ; } if ( entityProperty != null && tableColumn != null ) { var createScalarCommand = new CreateFragmentScalarPropertyCommand ( frag , entityProperty , tableColumn ) ; var cp2 = new CommandProcessor ( cpc , createScalarCommand ) ; cp2 . Invoke ( ) ; } } } return frag ; }
Creates a new MappingFragment in the existing EntityTypeMapping
based on another MappingFragment (fragToClone) in a different artifact.
Creates a new MappingFragment in the existing EntityTypeMapping based on another MappingFragment ( fragToClone ) in a different artifact .
cpc
CommandProcessorContext
fragToClone
MappingFragment
existingEntityTypeMapping
EntityTypeMapping
existingEntitySet
StorageEntitySet