865 votes

Entity Framework vs LINQ to SQL

Maintenant que .NET v3.5 SP1 a été publié (avec VS2008 SP1), nous avons maintenant accès à entity framework .NET.

Ma question est la suivante. Lorsque vous essayez de choisir entre utiliser Entity Framework et LINQ to SQL comme un ORM, quelle est la différence ?

La façon dont je comprends bien, l’Entity Framework (lorsqu’il est utilisé avec LINQ to Entities) est un « grand frère » à LINQ to SQL ? Si c’est le cas - quels avantages a-t-il ? Que peut il faire que LINQ to SQL ne peut pas faire sur son propre ?

496voto

Kris Points 3748

LINQ to SQL prend en charge uniquement 1 à 1 de cartographie de base de données de tables, de vues, sprocs et les fonctions disponibles dans Microsoft SQL Server. C'est un grand API à utiliser pour rapide d'accès aux données de construction relativement bien conçu bases de données SQL Server. LINQ2SQL a d'abord été publié avec C# 3.0 et .Net Framework 3.5.

LINQ to entities (ADO.Net Entity Framework) est un ORM (Object Relational Mapper) API qui permet une large définition de l'objet des modèles de domaine et de leurs relations à beaucoup de différents ADO.Net les fournisseurs de données. En tant que tel, vous pouvez mélanger et assortir un certain nombre de différents fournisseurs de bases de données, serveurs d'applications ou protocoles à la conception d'une agrégées mash-up des objets qui sont construits à partir d'une variété de tables, les sources, les services, etc. ADO.Net Cadre a été publiée avec le .Net Framework 3.5 SP1.

C'est un bon article d'introduction sur MSDN: L'introduction de LINQ to de Données Relationnelles

210voto

Brad Tutterow Points 5628

Je pense que la réponse rapide et sale est que

  • LINQ to SQL est le moyen rapide et facile de le faire. Cela signifie que vous obtiendrez va plus vite et livrer plus rapidement si vous travaillez sur quelque chose de plus petit.
  • Entity Framework est la façon tous azimuts, sans concession pour le faire. Cela signifie que vous prendre plus de temps dès le départ, développer plus lentement et avoir plus de flexibilité si vous travaillez sur quelque chose de plus grand.

111voto

Zack Peterson Points 19350

Est LINQ to SQL Réellement Mort? par Jonathan Allen pour InfoQ.com

Matt Warren décrit [LINQ to SQL] comme quelque chose qui "n'a même jamais été censé exister." Essentiellement, c'était juste censé être en stand-in pour les aider à développer LINQ jusqu'à ce que le réel ORM était prêt.

...

L'échelle de l'Entity Framework a provoqué pour la louper .NET 3.5 et Visual Studio 2008, date limite. Il a été achevé à temps pour l'malheureusement nommé ".NET 3.5 Service Pack 1", qui était plus comme une version majeure d'un service pack.

...

Les développeurs n'aiment pas [ADO.NET Entity Framework] en raison de la complexité.

...

comme de .NET 4.0, LINQ to entities sera recommandé solution d'accès aux données pour LINQ to scénarios relationnels.

99voto

JamesSugrue Points 8426

Il y a un certain nombre de différences évidentes contenues dans l'article @lars posté, mais la réponse courte est:

  • L2S est étroitement associé - propriété de l'objet spécifique du champ de base de données ou, plus correctement, objet de la cartographie à un schéma de base de données
  • L2S ne fonctionne qu'avec SQL Server (autant que je sache)
  • EF permet de cartographier une seule classe à plusieurs tables
  • EF poignée M-M relations
  • EF ont la capacité à cibler ADO.NET fournisseur de données

La prémisse originale a été L2S est pour un Développement Rapide et EF pour plus d' "enterprisey" des applications n-tier, mais c'est la vente de L2S un peu court.

53voto

Jiyosub Points 610

Mon expérience avec Entity Framework a été moins que stellaire. Tout d’abord, vous devez hériter des classes de base de EF, donc dire au revoir à POCOs. Votre conception devront être autour de l’EF. Avec LinqtoSQL je pourrais utiliser mes objets métier existant. En outre, il n’y a aucun chargement différé, vous devez implémenter que vous-même. Il y a quelques solutions de contournement là-bas pour utiliser POCOs et chargement différé, mais elles existent à mon humble avis car EF n’est pas encore prêt. J’ai l’intention d’y revenir après 4.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X