2016-06-22 44 views
19

Mi piacerebbe capire su quando qualcuno dovrebbe davvero pensare di usare Dapper. Inoltre vorrei capire i pro e contro di confrontare Dapper Vs ADO.NETPerché dovresti usare Dapper? Inoltre, chiunque può commentare Dapper Vs ADO.NET Pro e Contro

+0

Fai la ricerca da solo. Puoi leggere la corretta gestione di ADO.NET nel mio blog: http://blog.gauffin.org/2013/01/ado-net-the-right-way/ – jgauffin

+0

Dapper utilizza ADO.NET ma esegue l'interrogazione e la mappatura i risultati sugli oggetti sono molto più semplici. È così - altrettanto veloce ma molto più facile da usare. PS: è abbastanza facile usare query parametrizzate correttamente con Dapper che le persone dimenticano di introdurre bug di SQL injection a causa della concatenazione di stringhe dei valori –

risposta

46

Dapper è solo uno strumento. Ciò che fa è:

  • rendono banalmente facile da parametrizzare correttamente le query
  • rendere più banalmente facile per eseguire query (scalari, multi-file, multi-griglie, e no-risultati)
  • rendono banalmente facile trasformare i risultati in oggetti
  • molto efficiente e rapido

non cosa fa è:

  • generare un modello di classe per voi
  • generare query per voi
  • oggetti della pista e le loro modifiche in modo da poter chiamare SubmitChanges() (o qualsiasi altra cosa)

La biblioteca Dapper prima non lo fa fornire funzionalità CRUD, ma il pacchetto aggiuntivo "contrib" fa fornisce CRUD di base.

In sostanza, non è un ORM a pieno carico, ma se si desidera solo per eseguire query senza dover lotta un ORM, o pagare le spese associate con un ORM, è abbastanza grande. Se non conosci SQL, probabilmente la libreria non è adatta a te ("contrib" dovrebbe andare bene, però), ma molte persone non solo conoscono lo SQL, ma vogliono il avere il controllo del SQL (piuttosto che lasciare che l'ORM rilevi un'interpretazione del tuo intento che non è stata ottimizzata, ecc.).

In sintesi, le ragioni potrebbero essere:

  • si desidera eccellenti prestazioni di esecuzione crudo con spese minime
  • si desidera mantenere il controllo sulla tua SQL
  • non avete bisogno o volete l'oggetto- monitoraggio di caratteristiche di un ORM pieno di grasso

per quanto riguarda "vs ADO.NET":

  • ADO.NET crudo comporta un molto più codice da scrivere e un sacco di bordo-casi da ricordare a proposito (che si occupa Dapper con internamente senza la necessità di preoccuparsi di loro)
  • ma non è effettivamente più veloce - dapper fa un sacco di meta-programmazione per archiviare e riutilizzare le strategie una volta che ha fatto ciò di cui ha bisogno per la query
  • se si utilizzano funzionalità specifiche del provider che non sono disponibili in ADO raw.NET (ad esempio, passando/recuperando dati SqlGeometry), quelli non sono direttamente availalbe in dapper - avresti bisogno di implementare un'interfaccia per dirgli come gestire il tuo scenario, ma non è difficile (notare che lo specifico L'esempio SqlGeometry viene gestito da un'ulteriore libreria dapper)
+2

Un'altra differenza, Dapper rende l'uso di query parametriche così facile che le persone dimenticano di introdurre errori di SQL injection concatenando le istruzioni e raw valori. –

+3

@PanagiotisKanavos bene, stavo includendo quello nel "correttamente" nel primo proiettile :) –

+0

buona spiegazione –