1

当我执行 Linq2Sql 查询时

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 Profiler(和 Linqpad 的 sql 窗口和 VS IntelliTrace 窗口)得到的结果表明 sql 不包含任何 TOP,只是简单的

select [t0].Id, [t0].Name
from [dbo].[SomeTable] as [t0]
where [t0].Id = @p0

重要的是Linq版本吗?我正在使用 .Net 框架 4.0,并引用了 System.Data.Linq dll 的 4.0 版本。

4

1 回答 1

2

第一个查询由使用 TOP(2) 的实体框架生成,但第二个查询由不使用 TOP(2) 的 Linq-to-Sql 生成,而是在结果集包含多个记录时检查读取逻辑(并在这种情况下中止阅读)。

于 2012-04-25T07:10:31.830 回答