Beispiel #1
0
        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);
        }
Beispiel #4
0
        public ColumnDefinition GetColumnDefinition(string tableName, string columnName)
        {
            FirebirdTableDefinition firebirdTableDef = GetTableDefinition(tableName);

            return(firebirdTableDef.Columns.First(x => x.Name == columnName));
        }