當我執行LINQ2SQL查詢像使用Single()時,Linq2Sql生成的sql是否包含Top?
db.Items.Single(it => it.Id == 1)
一些人堅持生成的SQL就像
select TOP (2) [t0].Id, [t0].Name
from [dbo].[SomeTable] as [t0]
where [t0].Id = @p0
但我從SQL Server事件探查器(和Linqpad的SQL窗口,VS的IntelliTrace窗口)獲得表明sql不包含任何TOP,只是普通的
select [t0].Id, [t0].Name
from [dbo].[SomeTable] as [t0]
where [t0].Id = @p0
Linq版本是否重要?我使用.Net框架4.0,並引用4.0版本的System.Data.Linq dll。
'Id'字段保證是唯一的嗎?如果是這樣,TOP不需要確保只返回1條記錄。你可以嘗試一個不依賴唯一性的查詢嗎? – PinnyM 2012-04-25 03:55:32
你是如何得到使用TOP的查詢的?您可以在引用TOP的地方引用它。 – Marshal 2012-04-25 04:08:29
@PinnyM使用其他非唯一字段產生相同的SQL,沒有TOP – 2012-04-25 06:13:17