web-dev-qa-db-fra.com

Quelle est la différence entre un orm et ADO.net?

Je lis un livre et il dit: "si vous créez votre propre couche d'accès aux données en utilisant ADO.NET pour accéder à votre base de données, vous serez peu affecté si le schéma de données existe ou non. Si toutefois vous utilisez un O/RM, votre flexibilité sera limitée par l'outil que vous utilisez ". Quelle est la principale différence entre ADO.NET et tout autre ORM?

10
Mehdi Souregi

ADO.NET fournit un accès cohérent aux sources de données telles que SQL Server et XML, et aux sources de données exposées via OLE DB et ODBC. Les applications grand public de partage de données peuvent utiliser ADO.NET pour se connecter à ces sources sources de données et récupérer, gérer et mettre à jour les données qu'elles contiennent.

ADO.NET sépare l'accès aux données de la manipulation des données en composants discrets qui peuvent être utilisés séparément ou en tandem. ADO.NET inclut des fournisseurs de données .NET Framework pour se connecter à une base de données, exécuter des commandes et récupérer les résultats. Ces résultats sont soit traités directement, placés dans un objet DataSet ADO.NET afin d'être exposés à l'utilisateur de manière ad hoc, combinés avec des données provenant de plusieurs sources, ou transmis entre les niveaux. L'objet DataSet peut également être utilisé indépendamment d'un fournisseur de données .NET Framework pour gérer des données locales à l'application ou provenant de XML.

ADO.NET est une couche qui vous permet de vous connecter à une base de données et de la modifier à l'aide de connexions, commandes et paramètres SQL. ADO.NET MSDN

Le mappage relationnel-objet (ORM, O/RM et outil de mappage O/R) en informatique est une technique de programmation pour convertir des données entre des systèmes de type incompatibles dans des langages de programmation orientés objet. Cela crée, en effet, une "base de données d'objets virtuels" qui peut être utilisée à partir du langage de programmation. Il existe des packages gratuits et commerciaux qui effectuent le mappage relationnel-objet, bien que certains programmeurs choisissent de construire leurs propres outils ORM.

Entity Framework et NHibernate sont des ORM. Cela signifie que vous n'opérez pas par des connexions SQL, des commandes, des paramètres - ORM le fait pour vous et permet de mapper la structure de votre base de données de manière OOP manière: vous pouvez ajouter, lire, mettre à jour, supprimer des enregistrements dans votre base de données à l'aide d'objets en C #. Vous devez uniquement mapper correctement votre objet à la base de données. Entity Framework est construit sur ADO.NET et utilise ADO.NET à l'intérieur. Les instructions SQL sont générées par ORM. ORM

En règle générale, l'accès à la base de données sans ORM est plus rapide, mais vous devez fournir davantage de lignes de code. Si vous souhaitez faire fonctionner votre base de données de manière OOP et écrire du code plus lisible, vous devez choisir ORM. Cela dépend de vos objectifs de ce que vous choisissez.

Il existe des Micro ORM (Dapper, BLToolkit) qui vous permettent d'écrire des requêtes SQL et de mapper les paramètres aux propriétés des objets. Les micro ORM, en général, ont de meilleures performances que les ORM complets, mais ADO.NET est toujours plus rapide.

En outre, il y a quelques questions et réponses sur StackOverflow: EF vs ADO.NET

8
Roman Doskoch
  • En cours de route, j'ai appris que les développeurs détestent travailler avec DataSets et DataReaders
  • . NET la plate-forme définit un certain nombre d'espaces de noms qui vous permettent d'interagir avec les systèmes de bases de données relationnelles. Collectivement, ces espaces de noms sont appelés ADO.NET.
  • ORM signifie Object-Relational Mapper qui consiste à mapper un objet avec un monde relationnel. Comme son nom l'indique builds a relation / maps objects (model) to database objects(tables).
  • ADO.NET Était le moyen traditionnel de connecter votre application à une base de données et donnait au développeur le contrôle total sur les opérations de la base de données tandis que ORM est construit au-dessus de ADO.NET Et utilise ADO.NET Implicitement.
  • En bref, utiliser un ORM comme NHibernate, Entity Framework simplifie la vie lorsque le mappage d'objets (modèles) est pris en charge en interne par le ORM.
  • Lorsque vous utilisez un ORM tout n'est pas entre vos mains car toutes les requêtes sont générées par le ORM lui-même. Maintenant, nous ne savons pas si ces requêtes sont optimisées ou non.

Dans les scénarios où les performances de votre application sont une préoccupation principale et absolument cruciale OU dans les scénarios où vous savez que votre application deviendra énorme dans un futur proche, il est conseillé d'utiliser ADO.NET plutôt que Entity Framework car cela alourdit votre application.

  • La solution à cela était Micro ORM's Comme Dapper, BLToolkit. Ceux-ci fournissent l'essentiel de ce que les développeurs veulent - un moyen facile de mapper les opérations de base de données à des classes fortement typées.
  • La prise en charge de LINQ dans certains cas le rend encore meilleur. Mais le principal avantage de certains de ces micro-ORM est son raw speed.

Paroles de sagesse:

  1. Dapper ne fait que du mappage mais vous devez beaucoup coder, EF en fait beaucoup plus en plus et pas seulement du mappage. Donc EF sera lent.
  2. Je peux également dire que ADO.NET Pur est plus rapide que Dapper, OLEDB est plus rapide que ADO.NET Et ODBC peut être plus rapide que OLEDB.
  3. Donc, si je suis sérieux au sujet des performances, j'éviterais probablement tout ORM.
0
Tahir77667