efcore
efcore copied to clipboard
DefaultIfEmpty applied on child collection wipes the parent info in query result
trafficstars
myDbSet.Where(m => m.Id == 2)
.SelectMany(m => m.CourrielsMembres.DefaultIfEmpty().Select(cm => new { Id = m.Id, subId = cm.Id }))
.ToList();
Produce {"Id":0,"subId":0} instead of {"Id":2,"subId":0}
Here is the SQL generated:
SELECT [t].[Id], [t].[Id0] AS [subId]
FROM [Membre] AS [m]
OUTER APPLY (
SELECT [m].[Id], [c].[Id] AS [Id0], [c].[MembreId]
FROM [CourrielMembre] AS [c]
WHERE [m].[Id] = [c].[MembreId]
) AS [t]
WHERE [m].[Id] = 2
It should take [m].[Id] instead of [t].[Id] at the beginning of the select clause.
EF Core version: EF core 3.1 preview 3 Database provider: Microsoft.EntityFrameworkCore.SqlServer Target framework: .NET Core 3.0 Operating system: Windows 7 IDE:Visual Studio 2019 16.3.10
Also consider #27480