private static string AddSqlEngineVersionSpecificProperties(SqlEngineVersionSpecificProperties sqlEngineVersionSpecificProperties) { // new[] { // new SqlEngineVersionSpecificProperty(MsSqlVersion.MsSql2016, "Nocheck", "true"), // new SqlEngineVersionSpecificProperty(MsSqlVersion.MsSql2016, "Nocheck", "true") // } var sb = new StringBuilder(); if (sqlEngineVersionSpecificProperties.Any()) { sb.Append(", "); if (sqlEngineVersionSpecificProperties.Count() == 1) { var sqlEngineVersionSpecificProperty = sqlEngineVersionSpecificProperties.First(); sb.Append(AddSqlEngineVersionSpecificProperty(sqlEngineVersionSpecificProperty)); } else { sb.Append("new[] {"); foreach (var sqlEngineVersionSpecificProperty in sqlEngineVersionSpecificProperties) { sb.Append(AddSqlEngineVersionSpecificProperty(sqlEngineVersionSpecificProperty)); } sb.Append('}'); } } return(sb.ToString()); }
public static List <SqlEngineVersionSpecificPropertyMigration> CompareSqlEngineVersionSpecificPropertyChange(SqlEngineVersionSpecificProperties propertiesOriginal, SqlEngineVersionSpecificProperties propertiesNew) { var changes = new List <SqlEngineVersionSpecificPropertyMigration>(); foreach (var propertyOriginal in propertiesOriginal) { var propertyNew = propertiesNew.FirstOrDefault(p => p.Version == propertyOriginal.Version && p.Name == propertyOriginal.Name); if (propertyNew == null) { changes.Add(new SqlEngineVersionSpecificPropertyDelete() { SqlEngineVersionSpecificProperty = propertyOriginal }); } } foreach (var propertyNew in propertiesNew) { var propertyOriginal = propertiesOriginal.FirstOrDefault(p => p.Version == propertyNew.Version && p.Name == propertyNew.Name); if (propertyOriginal == null) { changes.Add(new SqlEngineVersionSpecificPropertyNew() { SqlEngineVersionSpecificProperty = propertyOriginal }); } else if (propertyNew.Value != propertyOriginal.Value) { changes.Add(new SqlEngineVersionSpecificPropertyChange() { SqlEngineVersionSpecificProperty = propertyOriginal, NewSqlEngineVersionSpecificProperty = propertyNew }); } } return(changes); }