private void ModifyTables() { // foreach field // 1. check if table exists. If not create change table. Add add column cr. foreach (QPoolField poolField in poolFields) { // normally there is only one alter table cr, but check all. List <QAlterTableCR> alterTablesCR = ChangeRequest.GetDescendants <QAlterTableCR>().Where(CR => CR.TableName == poolField.TableName && CR.DatabaseName == DatabaseName).ToList(); if (alterTablesCR != null && alterTablesCR.Count > 0) { // check if QAddColumnToTableCR item exists in alterTableCR. foreach (QAlterTableCR alterTableCR in alterTablesCR) { List <QAddColumnToTableCR> columns = alterTableCR.GetDescendants <QAddColumnToTableCR>().Where(CR => CR.ColumnName == poolField.FieldName).ToList(); if (columns == null || columns.Count == 0) { // add field to table. alterTableCR.AddColumnToTableCR(poolField.FieldName); } } } else { // create alter table cr, add field and add it to change request. QAlterTableCR alterTableCR = ChangeRequest.AddNewChild <QAlterTableCR>(); alterTableCR.TableName = poolField.TableName; alterTableCR.DatabaseName = DatabaseName; alterTableCR.AddColumnToTableCR(poolField.FieldName); } } }
public override void Modify() { foreach (QPoolField poolField in poolFields) { var children = ChangeRequest.GetDescendants <QAddColumnToTableCR>().Where(C => C.ColumnName == poolField.FieldName).ToList(); if (children == null || children.Count == 0) { // add child QAddColumnToTableCR newchild = ChangeRequest.AddNewChild <QAddColumnToTableCR>(); newchild.ColumnName = poolField.FieldName; } } }