2011-07-14 4 views
0

私はLinq to Sqlを使用しています。私は顧客のテーブル名を持っており、単一のレコードをフェッチしたい。linq to sql - Entity.Where()。Entity.Single()よりも良い()

1. datacontext.Customer.Where(a => a.CustId == 1).Single(); 

2. datacontext.Customer.Single(a => a.CustId == 1) 
パフォーマンスの点から

オプションがあり、より良い1、なぜ: 私は2つのオプションが次がありますか?

これらの両方のオプションの内部動作について説明します。 SQLクエリの観点から

+0

私はLinqのアイデアの一部は、あなたが "内部"を知る必要はないと思います。 SQLプロファイラを起動し、クエリが実行されているのを見てください - 私の推測は、それらが同じであるということです。 –

+1

あなたは、(テスト結果)それがあなたのアプリケーションの全体的なパフォーマンスに関係するだけでなく、信じる理由がありますか?もし私がオプション2に行くつもりがなければ、それはあなたの意図を最も明瞭に表現します。 –

答えて

1

、まったく同じです

exec sp_executesql N'SELECT [t0].[Id], [t0].[Naam] FROM [dbo].[Customers] AS [t0] WHERE [t0].[Id] = @p0',N'@p0 int',@p0=1 

exec sp_executesql N'SELECT [t0].[Id], [t0].[Naam] FROM [dbo].[Customers] AS [t0] WHERE [t0].[Id] = @p0',N'@p0 int',@p0=1 

及び2の結果で1つの結果。したがって、パフォーマンスの違いはありません。私はLINQ to SQLクエリビルダについて洞察を持っていないので、どちらの方が速いのか分からないが、それは重要ではないだろうか(単に2つしかないといいだろう。クエリオブジェクト内の対応するエントリ)。