public IndexDefinition GetIndex(string tableName, string indexName) { FirebirdTableDefinition firebirdTableDef = GetTableDefinition(tableName); if (firebirdTableDef.Indexes.Any(x => x.Name == indexName)) { return(firebirdTableDef.Indexes.First(x => x.Name == indexName)); } return(null); }
public FirebirdTableSchema(string tableName, FirebirdProcessor processor, FirebirdQuoter quoter) { _quoter = quoter; TableName = tableName; Processor = processor; Definition = new FirebirdTableDefinition() { Name = tableName, SchemaName = String.Empty }; Load(); }
public override void Process(RenameTableExpression expression) { Truncator.Truncate(expression); FirebirdSchemaProvider schema = new FirebirdSchemaProvider(this, _quoter); FirebirdTableDefinition firebirdTableDef = schema.GetTableDefinition(expression.OldName); firebirdTableDef.Name = expression.NewName; CreateTableExpression createNew = new CreateTableExpression() { TableName = expression.NewName, SchemaName = string.Empty }; //copy column definitions (nb: avoid to copy key names, because in firebird they must be globally unique, so let it rename) firebirdTableDef.Columns.ToList().ForEach(x => createNew.Columns.Add(new ColumnDefinition() { Name = x.Name, DefaultValue = x.DefaultValue, IsForeignKey = x.IsForeignKey, IsIdentity = x.IsIdentity, IsIndexed = x.IsIndexed, IsNullable = x.IsNullable, IsPrimaryKey = x.IsPrimaryKey, IsUnique = x.IsUnique, ModificationType = x.ModificationType, Precision = x.Precision, Size = x.Size, Type = x.Type, CustomType = x.CustomType })); Process(createNew); int columnCount = firebirdTableDef.Columns.Count; string[] columns = firebirdTableDef.Columns.Select(x => x.Name).ToArray(); InsertDataExpression data = new InsertDataExpression(); data.TableName = firebirdTableDef.Name; data.SchemaName = firebirdTableDef.SchemaName; using (DataSet ds = ReadTableData(string.Empty, expression.OldName)) { foreach (DataRow dr in ds.Tables[0].Rows) { InsertionDataDefinition insert = new InsertionDataDefinition(); for (int i = 0; i < columnCount; i++) { insert.Add(new KeyValuePair <string, object>(columns[i], dr.ItemArray[i])); } data.Rows.Add(insert); } } Process(data); DeleteTableExpression delTable = new DeleteTableExpression() { TableName = expression.OldName, SchemaName = string.Empty }; Process(delTable); }
public ColumnDefinition GetColumnDefinition(string tableName, string columnName) { FirebirdTableDefinition firebirdTableDef = GetTableDefinition(tableName); return(firebirdTableDef.Columns.First(x => x.Name == columnName)); }