c# - entre - dapper vs entity framework
¿Por qué debería uno usar Dapper? También puede alguien comentar sobre Dapper Vs ADO.NET Pros and Cons (1)
Me gustaría saber cuándo alguien realmente debería pensar en usar Dapper. También me gustaría entender los pros y los contras de comparar Dapper Vs ADO.NET
Dapper es solo una herramienta. Lo que hace es:
- Facilita la parametrización correcta de las consultas.
- hace que las consultas sean trivialmente fáciles (escalar, de múltiples filas, de múltiples cuadrículas y sin resultados)
- Facilita enormemente convertir los resultados en objetos.
- muy eficiente y rapido
Lo que no hace es:
- genera un modelo de clase para ti
- generar consultas para ti
- realiza un seguimiento de los objetos y sus cambios para que puedas llamar a
SubmitChanges()
(o lo que sea)
La biblioteca dapper sin formato no proporciona funciones de CRUD, pero el paquete adicional "contrib" proporciona CRUD básico.
Básicamente, no es un ORM de peso completo, pero si solo desea ejecutar consultas sin tener que luchar contra un ORM, o pagar los gastos generales asociados con un ORM, es bastante bueno. Si no sabe SQL, la biblioteca sin formato probablemente no sea para usted (aunque "contrib" debería estar bien), pero muchas personas no solo conocen SQL, sino que quieren tener el control de SQL (en lugar de permitiendo que el ORM realice una interpretación de su intención que no se haya optimizado, etc.
Para resumir, las razones pueden ser:
- Desea un excelente rendimiento de ejecución en bruto con gastos generales mínimos
- Desea mantener el control sobre su SQL
- no necesita ni desea las características de seguimiento de objetos de un ORM completo
En cuanto a "vs ADO.NET":
- ADO.NET en bruto implica mucho más código para escribir y muchos casos de borde para recordar (que Dapper trata internamente sin que usted tenga que preocuparse por ellos)
- pero en realidad no es más rápido: Dapper hace una gran cantidad de meta-programación para almacenar y reutilizar estrategias una vez que ha hecho lo que necesita para su consulta.
- Si está utilizando características específicas del proveedor que no están disponibles en ADO.NET sin procesar (por ejemplo, pasar / obtener datos de
SqlGeometry
), no están disponibles directamente enSqlGeometry
implementar una interfaz para decirle cómo maneje su escenario, pero eso no es difícil (tenga en cuenta que el ejemplo específico deSqlGeometry
es manejado por una biblioteca adicional)