EntityModel jest zdefiniowany jako: Kadr ma link do krajuWybierz tylko jedną kolumnę w LINQ
Podczas wykonywania tego kodu w LINQPad, widzę, że SQL, który jest generowany nie jest zoptymalizowany (wszystko pola są zwracane) w pierwszym zapytaniu? Czego tu brakuje lub robię źle?
Zapytanie 1 LINQ
var Country = Countries.FirstOrDefault(o => o.Id == 100000581);
var personnelIds = Country.Personnels.Select(p => p.Id).ToArray();
personnelIds.Dump();
zapytań SQL 1
exec sp_executesql N'SELECT [t0].[Id], [t0].[Version], [t0].[Identifier], [t0].[Name], , [t0].[UpdatedBy] FROM [Personnel] AS [t0] WHERE [t0].[Country_Id] = @p0',N'@p0 bigint',@p0=100000581
Zapytanie 2 LINQ
var Country = Countries.FirstOrDefault(o => o.Id == 100000581);
var personnelIds2 = Personnels.Where(p => p.Country == Country).Select(p => p.Id).ToArray();
personnelIds2.Dump();
Query 2 SQL
exec sp_executesql N'SELECT [t0].[Id] FROM [Personnel] AS [t0] WHERE [t0].[Country_Id] = @p0',N'@p0 bigint',@p0=100000581
Baza używany jest SQL Express 2008. A wersja LINQPad jest 4.43.06
Naprawdę chcę pobrać Personnels za pośrednictwem obiektu Country jako de wypisane w Zapytaniu 1. Nie rozumiem, że wszystkie kolumny są pobierane, a nie tylko kolumna Id –