/// <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); }
/// <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); }
/// <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); } }
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(); } }
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; } }