private static string getDataType(Enum.Language language, SqlDataType sqlDataType)
        {
            switch (language)
            {
            case Enum.Language.csharp:
                return(DataTypeConversion.ConvertTo_CSDataType(sqlDataType, false));

            case Enum.Language.sql:
                return(sqlDataType.ToString());

            default:
                return("string");
            }
        }
 public static SQLModel Map(Table table, SQLModel model, Enum.Language language)
 {
     model.Properties         = getProperties(language, table.Columns);
     model.CSharpKeySignature = string.Join(", ",
                                            (
                                                from k in model.KeyProperties
                                                select $"{ k.Type } { k.Name.LowerCamelCase }"
                                            ));
     model.CSharpKeyList = string.Join(", ",
                                       (
                                           from k in model.KeyProperties
                                           select $"{ k.Name.LowerCamelCase }"
                                       ));
     model.CSharpKeyTypeList = string.Join(", ",
                                           (
                                               from k in model.KeyProperties
                                               select $"{ k.Type }"
                                           ));
     model.SQLInsertSignature = getSQLInsertSignature(model.KeyProperties, model.NonKeyProperties);
     model.SQLUpdateSignature = string.Join(", ",
                                            (
                                                from p in model.Properties
                                                where !ignoredProperties_Update.Contains(p.Name.Value)
                                                select $"@{ p.Name.LowerCamelCase } { getDataType(p) }"
                                            ));
     model.CSharpInsertCallSignature = getCSharpInsertCallSignature(model.KeyProperties, model.NonKeyProperties);
     model.CSharpUpdateCallSignature = string.Join(", ",
                                                   (
                                                       from p in model.Properties
                                                       where !ignoredProperties_Update.Contains(p.Name.Value)
                                                       select $"@{ p.Name.Value }"
                                                   ));
     model.CSharpKeyCallSignature = string.Join(", ",
                                                (
                                                    from p in model.KeyProperties
                                                    select $"@{ p.Name.LowerCamelCase }"
                                                ));
     model.SQLPKSignature = getSQLPKSignature(model.Properties);
     model.SQLPKWhere     = getSQLPKWhere(model.Properties);
     model.SQLSet         = getSQLSet(model.Properties);
     return(model);
 }
        private static IEnumerable <SQLProperty> getProperties(Enum.Language language, ColumnCollection columns)
        {
            var properties = new List <SQLProperty>();

            foreach (Column column in columns)
            {
                var property = new SQLProperty
                {
                    DefaultValue   = column.DefaultConstraint?.Text,
                    Length         = column.DataType.MaximumLength,
                    Name           = NameFactory.Create(column.Name),
                    Nullable       = column.Nullable,
                    PrimaryKey     = column.InPrimaryKey,
                    SqlDataType    = column.DataType.SqlDataType,
                    Type           = getDataType(language, column.DataType.SqlDataType),
                    IsInPrimaryKey = column.InPrimaryKey
                };
                properties.Add(property);
            }
            return(properties);
        }