Esempio n. 1
0
        /// <summary>
        ///		Convierte una vista / tabla
        /// </summary>
        private ConnectionTableModel Convert(ConnectionModel connection, BaseTableDbModel baseTableView)
        {
            ConnectionTableModel view = new ConnectionTableModel(connection);

            // Asigna las propiedades
            view.Name        = baseTableView.Name;
            view.Description = baseTableView.Description;
            view.Schema      = baseTableView.Schema;
            // Asigna los campos
            foreach (FieldDbModel fieldSchema in baseTableView.Fields)
            {
                ConnectionTableFieldModel field = new ConnectionTableFieldModel(view);

                // Asigna las propiedades
                field.Name        = fieldSchema.Name;
                field.Description = fieldSchema.Description;
                field.TypeText    = fieldSchema.DbType;                              // fieldSchema.Type.ToString();
                field.Type        = Convert(fieldSchema.Type);
                field.Length      = fieldSchema.Length;
                field.IsRequired  = fieldSchema.IsRequired;
                field.IsKey       = fieldSchema.IsKey;
                field.IsIdentity  = fieldSchema.IsIdentity;
                // Añade el campo
                view.Fields.Add(field);
            }
            // Devuelve los datos
            return(view);
        }
Esempio n. 2
0
        /// <summary>
        ///		Cuando se compara por cadenas, obtiene la cadena de reemplazo junto al nombre de campo
        /// </summary>
        private string GetSqlReplaceField(string tableAlias, ConnectionTableFieldModel field, ScriptsValidationOptions options)
        {
            string sql = Provider.SqlHelper.FormatName(tableAlias, field.Name);

            // Si son cadenas, hace la conversión adecuada
            if (options.CompareString)
            {
                switch (field.Type)
                {
                case ConnectionTableFieldModel.Fieldtype.Date:
                    if (!string.IsNullOrWhiteSpace(options.DateFormat))
                    {
                        sql = $"to_date({sql}, '{options.DateFormat}')";
                    }
                    break;

                case ConnectionTableFieldModel.Fieldtype.Decimal:
                    if (!string.IsNullOrWhiteSpace(options.DecimalSeparator))
                    {
                        sql = $"CAST(REPLACE({sql}, '{options.DecimalSeparator}', '.') AS {GetDecimalType(options)})";
                    }
                    break;

                case ConnectionTableFieldModel.Fieldtype.Integer:
                    if (IsFieldBit(field.Name, options.BitFields))
                    {
                        sql = $"ABS({sql})";
                    }
                    break;
                }
            }
            // Devuelve la cadena SQL
            return(sql);
        }
Esempio n. 3
0
        /// <summary>
        ///		Carga el esquema de la conexión
        /// </summary>
        internal async Task LoadSchemaAsync(ConnectionModel connection, CancellationToken cancellationToken)
        {
            SchemaDbModel schema = await GetDbProvider(connection).GetSchemaAsync(TimeSpan.FromMinutes(5), cancellationToken);

            // Limpia las tablas de la conexión
            connection.Tables.Clear();
            // Agrega los campos
            foreach (TableDbModel tableSchema in schema.Tables)
            {
                ConnectionTableModel table = new ConnectionTableModel(connection);

                // Asigna las propiedades
                table.Name        = tableSchema.Name;
                table.Description = tableSchema.Description;
                table.Schema      = tableSchema.Schema;
                // Asigna los campos
                foreach (FieldDbModel fieldSchema in tableSchema.Fields)
                {
                    ConnectionTableFieldModel field = new ConnectionTableFieldModel(table);

                    // Asigna las propiedades
                    field.Name        = fieldSchema.Name;
                    field.Description = fieldSchema.Description;
                    field.Type        = fieldSchema.DbType;                                      // fieldSchema.Type.ToString();
                    field.Length      = fieldSchema.Length;
                    field.IsRequired  = fieldSchema.IsRequired;
                    field.IsKey       = fieldSchema.IsKey;
                    field.IsIdentity  = fieldSchema.IsIdentity;
                    // Añade el campo
                    table.Fields.Add(field);
                }
                // Añade la tabla a la colección
                connection.Tables.Add(table);
            }
        }
Esempio n. 4
0
 public NodeTableFieldViewModel(TreeSolutionBaseViewModel trvTree, NodeTableViewModel parent, ConnectionTableFieldModel field) :
     base(trvTree, parent, field.FullName, TreeConnectionsViewModel.NodeType.Table.ToString(), TreeConnectionsViewModel.IconType.Field.ToString(), field, false)
 {
     Field = field;
     if (field.IsKey)
     {
         Icon = TreeConnectionsViewModel.IconType.Key.ToString();
     }
 }
Esempio n. 5
0
 public NodeTableFieldViewModel(BaseTreeViewModel trvTree, NodeTableViewModel parent, ConnectionTableFieldModel field) :
     base(trvTree, parent, field.FullName, NodeType.Table, IconType.Field, field, false)
 {
     Field = field;
     if (field.IsKey)
     {
         Icon = IconType.Key;
     }
 }