web-dev-qa-db-fra.com

Pourquoi utiliser Dapper? Quelqu'un peut-il également commenter les avantages et les inconvénients de Dapper Vs ADO.NET

Je voudrais savoir à quel moment quelqu'un devrait vraiment penser à utiliser Dapper. Je voudrais également comprendre les avantages et les inconvénients de la comparaison de Dapper Vs ADO.NET

27
Divya

Dapper n'est qu'un outil. Ce qu'il fait est:

  • simplifiez facilement le paramétrage des requêtes
  • simplifier l'exécution des requêtes (scalaire, multi-lignes, multi-grilles et aucun résultat)
  • facilite la transformation des résultats en objets
  • très efficacement et rapidement

Ce que ne fait pas , c'est:

  • générer un modèle de classe pour vous
  • générer des requêtes pour vous
  • suivre les objets et leurs modifications pour que vous puissiez simplement appeler SubmitChanges() (ou autre)

La bibliothèque raw dapper ne fournit pas de fonctionnalités CRUD, mais le package supplémentaire "contrib" fournit CRUD de base.

Fondamentalement, ce n'est pas un ORM complet, mais si vous voulez simplement exécuter des requêtes sans avoir à combattre un ORM, ou payer les frais généraux associés avec un ORM, c'est plutôt bien. Si vous ne connaissez pas SQL, la bibliothèque brute n'est probablement pas pour vous ("contrib" devrait être bien, cependant), mais beaucoup de gens non seulement savent SQL, mais ils veulent garder le contrôle du SQL (plutôt que de laisser l'ORM proposer une interprétation de votre intention qui n'a pas été optimisée, etc.).

Pour résumer, les raisons peuvent être:

  • vous voulez d'excellentes performances d'exécution brutes avec un minimum de frais généraux
  • vous souhaitez garder le contrôle de votre SQL
  • vous n'avez pas besoin des fonctionnalités de suivi d'objets d'un ORM complet

Quant à "vs ADO.NET":

  • aDO.NET brut implique beaucoup plus de code à écrire et beaucoup de cas Edge à retenir (que Dapper traite en interne sans que vous ayez à vous en soucier)
  • mais ce n'est pas vraiment plus rapide - Dapper fait beaucoup de méta-programmation pour stocker et réutiliser des stratégies une fois qu'il a fait ce dont il a besoin pour votre requête
  • si vous utilisez des fonctionnalités spécifiques au fournisseur qui ne sont pas disponibles dans ADO.NET brut (par exemple, en passant/récupérant des données SqlGeometry), celles-ci ne sont pas directement disponible dans dapper - vous auriez besoin d'implémenter une interface pour lui dire comment gérer votre scénario, mais ce n'est pas difficile (notez que l'exemple spécifique SqlGeometry est géré par un autre bibliothèque dapper)
57
Marc Gravell