public bool HasChanges()
{
// first compare our top level properties
if (!ObjectHelper.AreEqual(this, OldTable))
return true;
if (Columns.HasChanges()) return true;
if (Indexes.HasChanges()) return true;
if (ForeignKeys.HasChanges()) return true;
return false;
}