2010-11-29 4 views
4

Les deux exemples suivants sont-ils différents et si oui, lequel est le plus efficace?Linq-to-Entities/Linq-to-SQL, une méthode d'interrogation de données est-elle plus efficace?

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

et

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

canaliser les informations de débogage à partir du contexte de données et voir quelles requêtes sont générées –

+0

Sql Profiler aide généralement avec de telles questions.)) –

Répondre

4

Ils sont équivalents. Il pourrait y avoir de légères différences dans la façon dont ils sont implémentés dans les différents fournisseurs LINQ, mais je m'attendrais à des performances presque égales. Le fournisseur LINQ to SQL par exemple produit le même SQL exacte pour les deux requêtes:

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

Je pense que la même pour Entity Framework.

Si je devais en choisir un, je choisirais la deuxième version parce qu'elle est plus concise sans perte de clarté. En fait, je dirais que c'est plus clair: il y a moins de bruit de mots-clés, donc la logique métier se démarque davantage.

2

Ils seront tous deux identiques (SQL et efficacité).

1

Ils sont identiques. Le compilateur devrait produire le même résultat pour les deux syntaxes LINQ.

Questions connexes