Dlaczego Entity Framework 6 generuje złożone zapytania SQL dla prostych wyszukiwań?

Mam to zapytanie LINQ

dbContext.Customers.Where(c => c.AssetTag == assetTag).Count();

lub

(from c in dbContext.Customers
 where c.AssetTag == assetTag
 select c).Count();

Wygenerowany SQL to

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[Customer] AS [Extent1]
    WHERE (([Extent1].[AssetTag] = @p__linq__0) AND ( NOT ([Extent1].[AssetTag] IS NULL    OR @p__linq__0 IS NULL))) OR (([Extent1].[AssetTag] IS NULL) AND (@p__linq__0 IS NULL))
)  AS [GroupBy1]

Dlaczego więc LINQ generuje tak skomplikowany SQL dla prostej instrukcji gdzie?

questionAnswers(4)

yourAnswerToTheQuestion