public EntityMetadataBuilder CopyFrom(EntityMetadataBuilder source)
        {
            if (source.TypeInfo.ClrType != TypeInfo.ClrType)
            {
                throw new NotSupportedException("The provided Source MetadataBuilder is for a differenct entity");
            }

            foreach (var item in source.Properties)
            {
                var targetProperty = this.Property(item.Name, item.PropertyType.ClrType);
                targetProperty.CopyFrom(item);
            }

            foreach (var item in source.PrimaryKey)
            {
                this.PrimaryKey.Add(item);
            }

            foreach (var item in source.Navigations)
            {
                var targetNavigation = this.Navigation(item.Name);
                targetNavigation.CopyFrom(item);
            }

            if (source.BaseEntity != null)
            {
                BaseEntity = ModelBuilder.Entity(source.BaseEntity.TypeInfo.ClrType);
            }

            return(this);
        }
 public EntityMetadataBuilder(EntityMetadataBuilder innerBuilder)
 {
     _innerBuilder = innerBuilder;
 }