diff --git a/src/Umbraco.Core/Persistence/NPocoSqlExtensions.cs b/src/Umbraco.Core/Persistence/NPocoSqlExtensions.cs index 60172ef687..178b68b4f8 100644 --- a/src/Umbraco.Core/Persistence/NPocoSqlExtensions.cs +++ b/src/Umbraco.Core/Persistence/NPocoSqlExtensions.cs @@ -869,12 +869,28 @@ namespace Umbraco.Core.Persistence var u = new SqlUpd(sql.SqlContext); u = updates(u); - for (var i = 0; i < u.SetExpressions.Count; i++) + var first = true; + foreach (var setExpression in u.SetExpressions) { - var setExpression = u.SetExpressions[i]; - sql.Append(setExpression.Item1 + "=@0" + (i < u.SetExpressions.Count - 1 ? "," : ""), setExpression.Item2); + switch (setExpression.Item2) + { + case null: + sql.Append((first ? "" : ",") + " " + setExpression.Item1 + "=NULL"); + break; + case string s when s == string.Empty: + sql.Append((first ? "" : ",") + " " + setExpression.Item1 + "=''"); + break; + default: + sql.Append((first ? "" : ",") + " " + setExpression.Item1 + "=@0", setExpression.Item2); + break; + } + + first = false; } + if (!first) + sql.Append(" "); + return sql; } diff --git a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs index cdab84ddb9..33185b694a 100644 --- a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs @@ -263,7 +263,7 @@ namespace Umbraco.Tests.Migrations var table = DefinitionFactory.GetTableDefinition(typeof(NodeDto), SqlSyntax); var column = table.Columns.First(x => x.Name == "id"); var create = SqlSyntax.Format(column); // returns [id] INTEGER NOT NULL IDENTITY(1060,1) - Database.Execute($"ALTER TABLE {SqlSyntax.GetQuotedTableName("umbracoNode")} ADD COLUMN " + create); + Database.Execute($"ALTER TABLE {SqlSyntax.GetQuotedTableName("umbracoNode")} ADD " + create); } } } diff --git a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoSqlExtensionsTests.cs b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoSqlExtensionsTests.cs index e37c2fbeaa..458479b293 100644 --- a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoSqlExtensionsTests.cs +++ b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoSqlExtensionsTests.cs @@ -111,6 +111,15 @@ INNER JOIN [dto2] ON [dto1].[id] = [dto2].[dto1id]".NoCrLf(), sql.SQL.NoCrLf()); Assert.AreEqual("SELECT [dto1].[id] AS [Id] , [dto2].[id] AS [id2]".NoCrLf(), sql.SQL.NoCrLf()); } + [Test] + public void UpdateTests() + { + var sql = Sql() + .Update(u => u.Set(x => x.EditorAlias, "Umbraco.ColorPicker")) + .Where(x => x.EditorAlias == "Umbraco.ColorPickerAlias"); + sql.WriteToConsole(); + } + [TableName("dto1")] [PrimaryKey("id", AutoIncrement = false)] [ExplicitColumns]