Entity Framework vs LINQ to SQL
Maintenant que .NET v3.5 SP1 a été publié (avec VS2008 SP1), nous avons maintenant accès à l' .NET entity framework.
Ma question est la suivante. Lorsque vous essayez de décider entre l'utilisation d'Entity Framework et LINQ to SQL comme un ORM, quelle est la différence?
La façon dont je le comprends, le Cadre de l'Entité (lorsqu'il est utilisé avec LINQ to entities) est un "big brother" de LINQ to SQL? Si c'est le cas quels avantages a-t-elle? Que peut-il faire que LINQ to SQL ne peut pas le faire sur son propre?
- Je pense que les réponses ci-dessous doivent être ré-examinée en raison de la longue période depuis EF a été libéré, de sorte que les nouveaux développeurs qui arriver ici pouvez obtenir une fausse impression. EF est devenu un GRAND et FACILE, outil de depuis sa libération anticipée. Vous venez de configurer la connexion à la DB et c'est une sorte de 90% de tout ce que vous devez. Un développement très rapide, d'un point de vue! À partir de là - LINQ est votre meilleur ami. Il est hautement personnalisable, MVC adore ça, et les gens qui disent que c'est mauvais - Apprendre à les utiliser en premier (et mettre la main sur LINQ ainsi)!
- Viens donc, il est clair - il n'est pas comme vous avez le choix maintenant - MSFT effectivement tué LINQ2SQL en faveur de l'EF. Cependant, le fait que MSFT open-source EF aidé à sucer le moins et est certainement mieux. Mais pour que personne ne se en EF - assurez-vous de comprendre qu'il y a encore beaucoup de bizarreries dans les EF. J'ai posté sur un stackoverflow.com/questions/305092/...
- LINQ to SQL n'est pas "mort"; il est toujours utilisable; (b) LINQ to SQL est le standard de la méthode d'accès aux données dans Windows Phone 8 développement.
- Juste creusé jusqu'à ce que le thread.. LINQ to SQL est "dead", n'est pas officiellement pris en charge par Microsoft.
- nécessaire].
- À partir de 2010 (avec la version de .NET4.0, la plus récente de la citation que j'ai pu trouver), MS a reconnu qu', alors que certains investissements peuvent être réalisés dans LINQ2SQL, "la majeure partie de notre investissement global sera dans le Cadre de l'Entité."
- Pour votre information,Wikipédia dit stackoverflow les Données d'accès de la couche est principalement sur Linq to SQL .
- ce n'est pas vrai, c'est Pimpant, il a même été développé par Sam (Saffro).
Vous devez vous connecter pour publier un commentaire.
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
Je pense que le rapide et sale réponse est que
Est LINQ to SQL Réellement Mort? par Jonathan Allen pour InfoQ.com
Il y a un certain nombre de différences évidentes contenues dans l'article @lars posté, mais la réponse courte est:
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.
LINQ to SQL
Entity Framework
Voir aussi:
dbSet<Orders>.Where()...ToList()
? Je pense qu'il est trompeur d'avoir Entity Framework opposée de LINQ to SQL.Mon expérience avec Entity Framework a été moins que stellaire. Tout d'abord, vous devez hériter de l'EF classes de base, afin de dire au revoir à POCOs. Votre dessin devra être autour de l'EF. Avec LinqtoSQL je pouvais utiliser mon business objects. En outre, il n'y a pas de chargement paresseux, vous avez à mettre en œuvre vous-même. Il y a quelques solutions pour utiliser Poco et le chargement paresseux, mais ils existent, à mon humble avis parce que EF n'est pas encore prête. J'ai l'intention de revenir après 4.0
J'ai trouvé une très bonne réponse ici qui explique comment utiliser ce qui en termes simples:
Mon impression est que votre base de données est assez énorme mal ou très mal conçu si Linq2Sql ne répondent pas à vos besoins. J'ai autour de 10 sites web à la fois plus vaste et de plus en plus petits à l'aide de Linq2Sql. J'ai regardé et Entity framework plusieurs fois, mais je ne peux pas trouver une bonne raison de l'utiliser sur Linq2Sql. Cela dit j'essaie d'utiliser mes bases de données en tant que modèle, de sorte que j'ai déjà un 1 à 1 mapping entre le modèle et la base de données.
À mon travail actuel, nous avons une base de données avec plus de 200 tableaux. Une ancienne base de données avec beaucoup de mauvaises solutions alors là, j'ai pu voir l'intérêt de l'Entité Cadre de Linq2Sql encore, mais je préfère à la refonte de la base de données depuis la base de données est le moteur de l'application, et si la base de données est mal conçu et lent, puis mon application sera aussi lent. À l'aide de Entity framework sur cette base de données semble comme un quickfix pour dissimuler le mauvais modèle, mais il n'a jamais pu dissimuler la mauvaise performance que vous obtenez à partir d'une telle base de données.
Vous pouvez trouver une bonne comparaison ici:
http://www.dotnet-tricks.com/Tutorial/entityframework/1M5W300314-Difference-between-LINQ-to-SQL-and-Entity-Framework.html
http://www.c-sharpcorner.com/blogs/entity-framework-vs-linq-to-sql1
sqlmetal.exe
docs.microsoft.com/en-us/dotnet/framework/tools/... pour générer le code/la cartographie de la base de données lors de l'utilisation deLinq to SQL
Les réponses ici ont couvert un grand nombre de différences entre Linq2Sql et de l'EF, mais il y a un point essentiel qui n'a pas été donné beaucoup d'attention: Linq2Sql prend uniquement en charge SQL Server alors que EF a des fournisseurs pour la suite du SGBDR:
Fourni par Microsoft:
L'intermédiaire de tiers fournisseurs:
pour n'en nommer que quelques-unes.
Cela rend EF un puissant outil de programmation d'abstraction au-dessus de votre magasin de données relationnelles, sens développeurs ont un modèle de programmation cohérent de travailler avec quel que soit le sous-jacent banque de données. Cela pourrait être très utile dans les situations où vous êtes en train de développer un produit que vous voulez vous assurer que vont interagir avec un large éventail de communes du SGBDR.
Une autre situation où l'abstraction est utile lorsque vous faites partie d'une équipe de développement qui travaille avec un certain nombre de différents clients, ou les différentes unités d'affaires au sein d'une organisation, et vous souhaitez améliorer la productivité des développeurs en réduisant le nombre de SGBDR est qu'ils ont à devenir familier avec afin de soutenir une variété de différentes applications différentes du SGBDR.
J'ai trouvé que je ne pouvais pas utiliser plusieurs bases de données dans le même modèle de base de données lors de l'utilisation de l'EF. Mais dans linq2sql je pouvais juste en préfixant le schéma de noms avec les noms de base de données.
C'était l'une des raisons pour lesquelles j'ai d'abord commencé à travailler avec linq2sql. Je ne sais pas si EF a encore permis cette fonctionnalité, mais je me souviens avoir lu qu'il était prévu pour elle de ne pas permettre cela.
Si votre base de données est simple et rapide, LINQ to SQL va faire. Si vous avez besoin de logique/entités abstraites sur le dessus de vos tables, puis aller pour Entity Framework.
Ne le prend en charge l'unique SQL 2008 les types de données. La différence de mon point de vue est que l'Entité a encore une chance de construire un modèle autour de mon géographique, le type de données dans une version future, et Linq to SQL, abandonnée, ne le sera jamais.
Me demande qu'est-ce qu'nHibernate, ou OpenAccess...
Je pense que si vous avez besoin de développer quelque chose de rapide avec pas de choses Étranges dans le milieu, et vous avez besoin de la facilité d'avoir des entités représentant vos tables:
Linq2Sql peut être un bon allié, en l'utilisant avec LinQ libère un grand développement de timing.
Je travaille pour un client qui a un gros projet qui est à l'aide de Linq-to-SQL. Lorsque le projet a commencé c'était le choix évident, parce que Entity Framework manquait quelques grands traits de l'époque et de la performance de Linq-to-SQL a été beaucoup mieux.
Maintenant EF a évolué et Linq-to-SQL manque asynchrone de soutien, ce qui est excellent et très évolutifs des services. Nous avons+ de 100 requêtes par seconde, parfois, et malgré le fait que nous avons optimisé nos bases de données, la plupart des requêtes prendre quelques millisecondes pour terminer. En raison de la base de données synchrone appels, le thread est bloqué et ne sont pas disponibles pour les autres demandes.
Nous pensons passer à Entity Framework, uniquement pour cette fonction. C'est dommage que Microsoft n'a pas mise en œuvre asynchrone de la prise en charge de Linq-to-SQL (ou open-source, de sorte que la communauté pourrait le faire).
Additif décembre 2018: Microsoft s'oriente vers .NET de Base et Linq-2-SQL n'est pas appuyer sur .NET de Base, de sorte que vous besoin de se déplacer à EF assurez-vous que vous pouvez passer en EF.De base à l'avenir.
Il y a aussi d'autres options à considérer, comme LLBLGen. C'est une mature ORM solution qui existe déjà longtemps et qui a été prouvé plus d'avenir alors que le MS de solutions de données (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.de base).
Il est fournisseur prend en charge SQL Server uniquement. C'est une technologie de cartographie de la carte SQL Server tables de base de données .NET des objets. Microsoft, qui est la première tentative à un ORM - Object-Relational Mapper.
Est la même idée, mais en utilisant Entity Framework dans le fond, comme l'ORM de nouveau à partir de Microsoft, Il prend en charge plusieurs base de données principal avantage de l'entity framework est développeur peut travailler sur une base de données pas besoin d'apprendre la syntaxe d'effectuer toute opération sur les différentes bases de données différentes