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