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 Framework 4.0 を使用しており、System.Data.Linq dll の 4.0 バージョンを参照しています。

4

1 に答える 1

2

最初のクエリは TOP(2) を使用する Entity Framework によって生成されますが、2 番目のクエリは TOP(2) を使用しない Linq-to-Sql によって生成され、代わりに結果セットに複数のレコードが含まれている場合は読み取りロジックをチェックします。 (その場合は読み取りを中止します)。

于 2012-04-25T07:10:31.830 に答える