-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
I use ExecuteUpdateAsync to update data, but it seems that the generated SQL statement has a problem. Here is the code:
var dbContext = await GetDbContextAsync();
var workQuery = dbContext.WorkOrders.Where(x => x.OrderCode == code);
await dbContext.Set<BomItem>()
.Where(x => x.OrderCode == code)
.ExecuteUpdateAsync(x =>
x.SetProperty(s => s.HasWorkOrder, b => workQuery.Where(o => o.BomItemId == b.Id).Any()));
The incorrect SQL statement is:
The correct SQL statement should be:
UPDATE [m]
SET [m].[HasWorkOrder] = CASE
WHEN EXISTS (
SELECT 1
FROM [MesWorkOrder] AS [m1]
WHERE [m1].[OrderCode] = @__code_0 AND [m1].[BomItemId] = [m].[Id]) THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END
FROM [MesBomItem] AS [m]
WHERE [m].[OrderCode] = @__code_0
EF Core version:
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: NET 7.0
Operating system:
IDE: Visual Studio 2022 17.6
Reactions are currently unavailable
