2010-11-29 13 views
4

Sind die folgenden zwei Beispiele unterschiedlich und wenn ja, was ist effizienter?Linq-to-Entities/Linq-to-SQL, ist eine Datenabrufmethode effizienter?

var user = (from u in db.Users where u.Id == userId select u).Single(); 

und

var user = db.Users.Single(p => p.Id == userId); 
+0

Pipe die Debug-Informationen aus dem Datenkontext und sehen, welche Abfragen generiert werden –

+0

Sql Profiler hilft normalerweise bei solchen Fragen.)) –

Antwort

4

Sie sind funktionell gleichwertig. Es könnte geringfügige Unterschiede in der Art und Weise geben, wie sie in den verschiedenen LINQ-Anbietern implementiert werden, aber ich würde fast genau die gleiche Leistung erwarten. Die LINQ to SQL-Provider zum Beispiel erzeugt die exakt gleiche SQL für beide Anfragen:

SELECT [t0].[Id], [t0].[Name] 
FROM [dbo].[User] AS [t0] 
WHERE [t0].[Id] = @p0 

Ich gehe davon aus, dass dies auch für die Entity Framework gilt.

Wenn ich einen wählen müsste, würde ich die zweite Version wählen, weil es prägnanter ist, ohne dass die Klarheit darunter leidet. In der Tat würde ich sagen, es ist klarer - es gibt weniger Keyword-Noise, so dass die Geschäftslogik mehr herausragt.

2

Sie werden beide identisch sein (SQL und Effizienz).

1

Sie sind gleich. Der Compiler sollte das gleiche Ergebnis für beide LINQ-Syntax produzieren.

Verwandte Themen