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