List<DTOs.Table> GetTables(Microsoft.SqlServer.Management.Smo.Database database)
        {
            var tables = new List<DTOs.Table>();
            foreach (Microsoft.SqlServer.Management.Smo.Table dbTable in database.Tables)
            {
                var table = new DTOs.Table
                {
                    Name = Helpers.ConvertNaming(dbTable.Name)
                };

                tables.Add(table);

                foreach (Microsoft.SqlServer.Management.Smo.Column dbColumn in dbTable.Columns)
                {
                    DataTable tb = dbColumn.EnumForeignKeys();

                    var sqlType = String.Empty;
                    switch (dbColumn.DataType.SqlDataType)
                    {
                        case SqlDataType.BigInt:
                        case SqlDataType.Int:
                        case SqlDataType.SmallInt:
                            sqlType = "NUMBER(12)";
                            break;
                        case SqlDataType.DateTime2:
                        case SqlDataType.DateTime:
                            sqlType = "DATE";
                            break;
                        case SqlDataType.NVarCharMax:
                        case SqlDataType.VarCharMax:
                            sqlType = "varchar2(4000)";
                            break;
                        case SqlDataType.NVarChar:
                        case SqlDataType.VarChar:
                            sqlType = "varchar2(255)";
                            break;
                        case SqlDataType.UniqueIdentifier:
                            sqlType = "CHAR(36)";
                            break;
                        case SqlDataType.Float:
                            sqlType = "NUMBER(12,5)";
                            break;
                        case SqlDataType.Bit:
                            sqlType = "NUMBER(1,0)";
                            break;
                        case SqlDataType.Decimal:
                            sqlType = "NUMBER(12, 2)";
                            break;
                        case SqlDataType.VarBinary:
                        case SqlDataType.VarBinaryMax:
                            sqlType = "BLOB";
                            break;
                        default:
                            break;
                    }
                    if (dbColumn.InPrimaryKey)
                        table.PrimaryKey = Helpers.ConvertNaming(dbColumn.Name);

                    table.Columns.Add(new TableColumn
                    {
                        IsNullable = dbColumn.Nullable,
                        Name = Helpers.ConvertNaming(dbColumn.Name),
                        Type = sqlType
                    });
                }
            }
            return tables;
        }
Exemple #2
0
        List <DTOs.Table> GetTables(Microsoft.SqlServer.Management.Smo.Database database)
        {
            var tables = new List <DTOs.Table>();

            foreach (Microsoft.SqlServer.Management.Smo.Table dbTable in database.Tables)
            {
                var table = new DTOs.Table
                {
                    Name = Helpers.ConvertNaming(dbTable.Name)
                };

                tables.Add(table);

                foreach (Microsoft.SqlServer.Management.Smo.Column dbColumn in dbTable.Columns)
                {
                    DataTable tb = dbColumn.EnumForeignKeys();

                    var sqlType = String.Empty;
                    switch (dbColumn.DataType.SqlDataType)
                    {
                    case SqlDataType.BigInt:
                    case SqlDataType.Int:
                    case SqlDataType.SmallInt:
                        sqlType = "NUMBER(12)";
                        break;

                    case SqlDataType.DateTime2:
                    case SqlDataType.DateTime:
                        sqlType = "DATE";
                        break;

                    case SqlDataType.NVarCharMax:
                    case SqlDataType.VarCharMax:
                        sqlType = "varchar2(4000)";
                        break;

                    case SqlDataType.NVarChar:
                    case SqlDataType.VarChar:
                        sqlType = "varchar2(255)";
                        break;

                    case SqlDataType.UniqueIdentifier:
                        sqlType = "CHAR(36)";
                        break;

                    case SqlDataType.Float:
                        sqlType = "NUMBER(12,5)";
                        break;

                    case SqlDataType.Bit:
                        sqlType = "NUMBER(1,0)";
                        break;

                    case SqlDataType.Decimal:
                        sqlType = "NUMBER(12, 2)";
                        break;

                    case SqlDataType.VarBinary:
                    case SqlDataType.VarBinaryMax:
                        sqlType = "BLOB";
                        break;

                    default:
                        break;
                    }
                    if (dbColumn.InPrimaryKey)
                    {
                        table.PrimaryKey = Helpers.ConvertNaming(dbColumn.Name);
                    }

                    table.Columns.Add(new TableColumn
                    {
                        IsNullable = dbColumn.Nullable,
                        Name       = Helpers.ConvertNaming(dbColumn.Name),
                        Type       = sqlType
                    });
                }
            }
            return(tables);
        }