private DataTable BuildDataTableDefinition(TableDescriptor table) { var dataTable = new DataTable(); foreach (var col in table.Columns) { dataTable.Columns.Add(new DataColumn(col.Name.GetName())); } dataTable.AcceptChanges(); dataTable.RowChanged += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; dataTable.TableNewRow += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; dataTable.RowDeleting += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; return dataTable; }
public void uses_sets_identity_on_identity_columns() { var table = _model.GetObject<TSqlTable>(new ObjectIdentifier("dbo", "TheTable"), DacQueryScopes.UserDefined); Assert.IsNotNull(table); var descriptor = new TableDescriptor(table); Assert.IsTrue(descriptor.Columns.First().IsIdentity); Assert.IsFalse(descriptor.Columns.Last().IsIdentity); }
public void uses_correct_literal_type() { var table = _model.GetObject<TSqlTable>(new ObjectIdentifier("dbo", "TheTable"), DacQueryScopes.UserDefined); Assert.IsNotNull(table); var descriptor = new TableDescriptor(table); Assert.AreEqual(LiteralType.Integer, descriptor.Columns.First().DataType); }
public void gets_table_name() { var table = _model.GetObject<TSqlTable>(new ObjectIdentifier("dbo", "TheTable"), DacQueryScopes.UserDefined); Assert.IsNotNull(table); var descriptor = new TableDescriptor(table); Assert.AreEqual("dbo", descriptor.Name.GetSchema()); Assert.AreEqual("TheTable", descriptor.Name.GetName()); }
public MergeDescriptor.Merge Build(TableDescriptor table, string scriptFile, DataTable data = null) { var merge = new MergeDescriptor.Merge(); merge.Name = table.Name.ToIdentifier(); if(data == null) merge.Data = BuildDataTableDefinition( table); else { merge.Data = data; } merge.ScriptDescriptor = new InScriptDescriptor(0,0, scriptFile); merge.Statement = new MergeStatement(); merge.Table = table; merge.Data.AcceptChanges(); merge.Option = new MergeOptions(true, true, true, merge.Table.Columns.Any(p=>p.IsKey)); return merge; }
private DataTable GetDataFromMerge(MergeStatement mergeStatement, TableDescriptor table) { var dataTable = new DataTable(); foreach (var col in table.Columns) { dataTable.Columns.Add(new DataColumn(col.Name.GetName())); } var inlineTable = mergeStatement.MergeSpecification.TableReference as InlineDerivedTable; foreach (var row in inlineTable.RowValues) { var dataTableRow = dataTable.NewRow(); var index = 0; foreach (var col in row.ColumnValues) { if (col as NullLiteral != null) { dataTableRow[index++] = DBNull.Value; } else { var value = col as Literal; if (value == null) { Log.WriteInfo("Error Parsing Merge Statement, Could not convert column to Literal: {0}", col); MessageBox.Show("Error we expected to get a literal parsing a merge statement for the " + table.Name.GetName() + " table but we got a " + col.ToString() + "\r\nCheck that you don't have an unquoted string or another impossible type"); return null; } dataTableRow[index++] = value.Value; } } dataTable.Rows.Add(dataTableRow); } dataTable.AcceptChanges(); dataTable.RowChanged += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; dataTable.TableNewRow += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; dataTable.RowDeleting += (sender, args) => { dataTable.ExtendedProperties["Changed"] = true; }; return dataTable; }