internal static EdmProperty Clone(this EdmProperty property)
        {
            EdmProperty clone = EdmProperty.Create(property.Name, property.TypeUsage);

            clone.CollectionKind        = property.CollectionKind;
            clone.ConcurrencyMode       = property.ConcurrencyMode;
            clone.IsFixedLength         = property.IsFixedLength;
            clone.IsMaxLength           = property.IsMaxLength;
            clone.IsUnicode             = property.IsUnicode;
            clone.MaxLength             = property.MaxLength;
            clone.Precision             = property.Precision;
            clone.Scale                 = property.Scale;
            clone.StoreGeneratedPattern = property.StoreGeneratedPattern;
            clone.SetMetadataProperties(property
                                        .MetadataProperties
                                        .Where(metadataProerty => !clone
                                               .MetadataProperties
                                               .Any(cloneMetadataProperty => cloneMetadataProperty.Name.EqualsOrdinal(metadataProerty.Name))));
            return(clone);
        }