diff --git a/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs b/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs index 40bbb33e8..61583bb4e 100644 --- a/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs +++ b/src/EFCore.PG/Query/Internal/NpgsqlQuerySqlGenerator.cs @@ -341,7 +341,7 @@ protected override Expression VisitUpdate(UpdateExpression updateExpression) var table = selectExpression.Tables[i]; var joinExpression = table as JoinExpressionBase; - if (ReferenceEquals(updateExpression.Table, joinExpression?.Table ?? table)) + if (updateExpression.Table.Alias == (joinExpression?.Table.Alias ?? table.Alias)) { LiftPredicate(table); continue; diff --git a/test/EFCore.PG.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesNpgsqlTest.cs b/test/EFCore.PG.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesNpgsqlTest.cs index af6d6cfa2..d32b3c4f7 100644 --- a/test/EFCore.PG.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesNpgsqlTest.cs +++ b/test/EFCore.PG.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesNpgsqlTest.cs @@ -50,12 +50,17 @@ DELETE FROM "Owner" AS o """); } - // TODO: #3253 public override async Task Replace_ColumnExpression_in_column_setter(bool async) { - var exception = await Assert.ThrowsAsync(() => base.Replace_ColumnExpression_in_column_setter(async)); + await base.Replace_ColumnExpression_in_column_setter(async); - Assert.Equal("42712", exception.SqlState); + AssertSql( + """ +UPDATE "OwnedCollection" AS o0 +SET "Value" = 'SomeValue' +FROM "Owner" AS o +WHERE o."Id" = o0."OwnerId" +"""); } public override async Task Delete_aggregate_root_when_table_sharing_with_non_owned_throws(bool async)