Exemple #1
0
        public override void Process(Expressions.RenameTableExpression expression)
        {
            truncator.Truncate(expression);
            FirebirdSchemaProvider schema   = new FirebirdSchemaProvider(this);
            TableDefinition        tableDef = schema.GetTableDefinition(expression.OldName);

            tableDef.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)
            tableDef.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 = tableDef.Columns.Count;

            string[]             columns = tableDef.Columns.Select(x => x.Name).ToArray();
            InsertDataExpression data    = new InsertDataExpression();

            using (DataSet ds = ReadTableData(String.Empty, expression.OldName))
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    IEnumerable <IDataValue> columnValues = Enumerable.Range(0, columnCount).Select(index => new DataValue(columns[index], dr.ItemArray[index])).Cast <IDataValue>();

                    ExplicitDataDefinition insert = new ExplicitDataDefinition(columnValues);

                    data.Rows.Add(insert);
                }
            }
            Process(data);

            DeleteTableExpression delTable = new DeleteTableExpression()
            {
                TableName  = expression.OldName,
                SchemaName = String.Empty
            };

            Process(delTable);
        }
Exemple #2
0
        public void CallingIsNullAddsANullColumn()
        {
            var expressionMock = new Mock <DeleteDataExpression>();

            var builder = new DeleteDataExpressionBuilder(expressionMock.Object);

            builder.IsNull("TestColumn");

            var             result    = expressionMock.Object;
            IDataDefinition rowobject = result.Rows.First();

            Assert.IsInstanceOf <ExplicitDataDefinition>(rowobject);
            ExplicitDataDefinition rowDefinition = (ExplicitDataDefinition)rowobject;

            rowDefinition.Data.First().ColumnName.ShouldBe("TestColumn");
            rowDefinition.Data.First().Value.ShouldBeNull();
        }
 /// <summary>
 /// Returns an <see cref="IEnumerable{T}"/> of <see cref="IDataValue"/> for
 /// the specified <see cref="ExplicitDataDefinition"/>
 /// </summary>
 /// <param name="dataDefinition"></param>
 /// <returns></returns>
 public virtual IEnumerable <IDataValue> Evaluate(ExplicitDataDefinition dataDefinition)
 {
     return(dataDefinition.Data);
 }