diff --git a/test/EFCore.MySql.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesMySqlTest.cs index 6dbd2725f..1c4f10582 100644 --- a/test/EFCore.MySql.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesMySqlTest.cs +++ b/test/EFCore.MySql.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesMySqlTest.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.BulkUpdates; using Microsoft.EntityFrameworkCore.TestModels.Northwind; using Microsoft.EntityFrameworkCore.TestUtilities; @@ -1475,6 +1476,28 @@ public override async Task Update_with_two_inner_joins(bool async) """); } + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Update_Where_set_ordering_is_preserved(bool async) + => TestHelpers.ExecuteWithStrategyInTransactionAsync( + Fixture.CreateContext, Fixture.UseTransaction, + async context => + { + var updated = await context.Set().ExecuteUpdateAsync( + setters => setters + .SetProperty(c => c.ContactName, "X") + .SetProperty(c => c.ContactTitle, c => c.ContactName + "Y")); + Assert.True(updated > 0); + Assert.Equal(updated, await context.Set().CountAsync(c => c.ContactTitle == "XY")); + + updated = await context.Set().ExecuteUpdateAsync( + setters => setters + .SetProperty(c => c.City, "Y") + .SetProperty(c => c.ContactName, c => c.City + "X")); + Assert.True(updated > 0); + Assert.Equal(updated, await context.Set().CountAsync(c => c.ContactName == "YX")); + }); + private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected);