Tôi có truy vấn LINQ nàyTại sao Entity Framework 6 tạo các truy vấn SQL phức tạp cho tra cứu đơn giản?
dbContext.Customers.Where(c => c.AssetTag == assetTag).Count();
hoặc
(from c in dbContext.Customers
where c.AssetTag == assetTag
select c).Count();
SQL được tạo ra là
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]
Vậy tại sao LINQ tạo SQL phức tạp như vậy cho một nơi tuyên bố đơn giản?
Cột '[AssetTag]' của bạn có được phép là 'null' không ?. –
dường như không phức tạp với tôi, nó chỉ tạo ra một tuyên bố để bảo vệ cuộc gọi của bạn từ một mức độ không. – Claies
bạn có thể cho tôi biết làm thế nào bạn có thể nhận được các truy vấn SQL này từ Linq hay Lamda .. điều này không liên quan đến câu hỏi của bạn Tôi đang gặp khó khăn. –