private void SynchronizeComplexUDTT(Type c, SqlServerMappedClassAttribute attr)
        {
            var schema = DefaultSchemaName;

            if (attr != null && attr.Schema != null)
            {
                schema = attr.Schema;
            }
            var name     = MakeUDTTName(c);
            var fullName = MakeIdentifier(schema, name);

            if (this.UDTTExists(schema, name))
            {
                this.DropUDTT(fullName);
            }
            this.CreateComplexUDTT(fullName, c);
        }
        public static string MakeUDTTName(Type t)
        {
            if (t.IsArray)
            {
                t = t.GetElementType();
            }

            var attr = MappedObjectAttribute.GetAttribute <SqlServerMappedClassAttribute>(t);

            if (attr == null)
            {
                attr      = new SqlServerMappedClassAttribute();
                attr.Name = t.Name;
            }

            attr.InferProperties(t);

            return(attr.Name + "UDTT");
        }