-
Notifications
You must be signed in to change notification settings - Fork 30
Open
Description
Here's the class and query:
public class Order
{
public Address? ShippingAddress { get; set; }
public Address? BillingAddress { get; set; }
[Projectable]
public Address Address => ShippingAddress ?? BillingAddress;
}
await db.Orders.Select(x => x.Address.StreetAddress).FirstOrDefaultAsync();
That query generates SQL that selects all columns on both address entities which isn't ideal:
SELECT TOP(1) CASE
WHEN [a].[Id] IS NULL THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END, [a0].[Id], [a0].[City], [a0].[CountryCode], [a0].[CountryId], [a0].[Country], [a0].[CreatedAt], [a0].[Data], [a0].[FirstName], [a0].[LastName], [a0].[PostalCode], [a0].[ProvinceCode], [a0].[ProvinceId], [a0].[ProvinceOrState], [a0].[StreetAddress], [a0].[StreetAddress2], [a0].[UpdatedAt], [a0].[UserData], [a0].[UserId], [a].[Id], [a].[City], [a].[CountryCode], [a].[CountryId], [a].[Country], [a].[CreatedAt], [a].[Data], [a].[FirstName], [a].[LastName], [a].[PostalCode], [a].[ProvinceCode], [a].[ProvinceId], [a].[ProvinceOrState], [a].[StreetAddress], [a].[StreetAddress2], [a].[UpdatedAt], [a].[UserData], [a].[UserId]
FROM [dbo].[Orders] AS [o]
LEFT JOIN [dbo].[Addresses] AS [a] ON [o].[ShippingAddressId] = [a].[Id]
LEFT JOIN [dbo].[Addresses] AS [a0] ON [o].[BillingAddressId] = [a0].[Id]
Is there a way to use Projectables like that without selecting all the additional columns?
Metadata
Metadata
Assignees
Labels
No labels