La principal ventaja que nos aporta el uso de un ORM es la reducción de código a escribir en nuestra aplicación en comparación con las técnicas tradicionales de acceso a datos sobre RDBMS. La principal desventaja derivada del alto nivel de abstracción generado entre el modelo de entidades de nuestra aplicación y el RDBMS subyacente es que se tiende a “pasar por alto” toda la “magia” que el ORM genera para interactuar con la base de datos relacional física. Esto, en último término, puede llevar a importantes deficiencias en el rendimiento de las aplicaciones. Así, el rendimiento de nuestra aplicación no solo depende del ORM, sino del uso que hacemos de él.
Antes de comenzar las argumentaciones, hay que resaltar que la web está llena de partidarios y detractores del uso de ORMs. Además, existe un gran número de implementaciones de distintos proveedores, ofreciendo servicios con diferentes características. Por ello, la intención es solo la de aportar una visión al debate para facilitar la decisión de usar o no este tipo de componentes y en caso de utilizarse, qué características debería tener el ORM para encajar mejor en nuestra aplicación.
La decisión sobre usar o no un ORM debería girar en torno a dos ejes fundamentales:
En base a estos dos ejes principales la recomendación sería la siguiente:
No obstante, a modo de excepción, podríamos evaluar el uso de algún micro-ORM muy ligero tipo Dapper dependiendo de las especificaciones de nuestra aplicación y nuestros criterios personales. Éste nos proporcionará servicios simples de “mapeo” con uso de SQL personalizado.
Suponiendo que nos hemos decantado por tecnología Microsoft Entity Framework como selección de nuestro ORM, convendría tener presente algunos puntos fundamentales para elegir entre la versión clásica y la versión core de este popular ORM.
Para aplicaciones nuevas se recomienda usar Entity Framework Core si la aplicación a desarrollar no exige ninguna funcionalidad todavía no implementada en esta versión, es decir, todavía no ha sido “migrada” desde la versión clásica y, se quiere aprovechar todas las características de .Net Core (ligereza, multiplataforma, etc.)
Si la aplicación únicamente va a ser desplegada en entornos Windows y no requiere nueva funcionalidad específica creada a partir de Entity Framework Core, el uso de Entity Framework 6 puede ser la opción correcta para su aplicación.
José Antonio es Ingeniero Superior de Telecomunicación por la Universidad de Zaragoza, con más de 15 años de experiencia profesional en entornos IT. Se unió a la Firma en 2017 como jefe de equipo en la competencia Microsoft dentro del área de DxD de Deloitte. A lo largo de su carrera profesional ha participado en múltiples proyectos, fundamentalmente en entornos basados en tecnologías Microsoft .Net con bases de datos relacionales y multidimensionales. Asimismo, posee varias certificaciones en tecnologías Microsoft desde 2003, como MCAD o MCPD.