/// <summary> /// Returns a <see cref="RelationalModelTransform"/> object that describe the changes /// required to transform the initial model into the desired model. /// </summary> /// <param name="initial"></param> /// <param name="desired"></param> /// <returns></returns> public RelationalModelTransform CompareModels(RelationalModelInfo initial, RelationalModelInfo desired) { var changes = new List <RelationalModelChange>(); // compare tables changes.AddRange( CompareSets(initial.Tables, desired.Tables, AddTable, DropTable, CompareTables) ); if (_enumOption != EnumOptions.None) { // compare enumeration values changes.AddRange( CompareSets(initial.Enumerations, desired.Enumerations, item => AddEnumeration(desired.GetTable(item.Table), item), item => DropEnumeration(initial.GetTable(item.Table), item), (x, y) => CompareEnumerations(desired.GetTable(y.Table), x, y)) ); } return(new RelationalModelTransform(changes)); }