He estado investigando los llamados "Micro ORM" como Dapper y (en menor medida, ya que depende de .NET 4.0) Masivo, ya que estos podrían ser más fáciles de implementar en el trabajo que un ORM completo desde nuestro sistema actual depende en gran medida de los procedimientos almacenados y requeriría una refactorización significativa para trabajar con un ORM como NHibernate o EF. ¿Cuál es el beneficio de usar uno de estos en un ORM completo? Parece que fue una fina capa alrededor de una conexión de base de datos que todavía le obliga a escribir SQL prima - tal vez estoy equivocado, pero yo siempre me dijeron que la razón de ORM en el primer lugar es por lo que no tiene que escribir SQL, podría generarse automáticamente; especialmente para combinaciones de tablas múltiples y relaciones de mapeo entre tablas que son difíciles de hacer en SQL puro pero triviales con un ORM.
Por ejemplo, mirando un ejemplo de Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
¿En qué se diferencia eso de usar una capa de datos ADO.NET enrollada, excepto que no tiene que escribir el comando, establecer los parámetros y supongo que mapear la entidad de nuevo usando un Builder. Parece que incluso podría usar una llamada a procedimiento almacenado como la cadena SQL.
¿Hay otros beneficios tangibles que me faltan aquí donde un Micro ORM tiene sentido para usar? Realmente no estoy viendo cómo está guardando algo sobre la forma "antigua" de usar ADO.NET, excepto tal vez unas pocas líneas de código; todavía tiene que escribir para averiguar qué SQL necesita ejecutar (que puede ser complicado) y todavía tiene que asignar relaciones entre tablas (la parte con la que más ayudan los ORM de IMHO).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
y luegodog.First().Age
para acceder a las propiedades.Respuestas:
Beneficios:
Eso es más o menos, para ser honesto. Tienes un contenedor muy ligero para tus conexiones sql que hará la conversión de objetos por ti. Obviamente, puede ajustar las consultas sin tener que lidiar con ningún SQL autogenerado.
Contras:
Tienen su lugar, y son una herramienta muy efectiva que puede quitar algo del "trabajo burro" de los desarrolladores cuando interactúan con la base de datos, pero en realidad simplemente no pueden tomar el lugar de un ORM completo a gran escala. sistema para consultas que no son críticas para el rendimiento, simplemente debido al mayor costo de mantenimiento.
Si tiene dificultades con el rendimiento en las consultas de base de datos, le sugiero que sería mejor usar estos marcos de mapeo solo con procedimientos almacenados, para obtener una indicación en tiempo de compilación de si su SQL es válido (más los beneficios de rendimiento adicionales) .
fuente
En el sitio web de micro ORM PetaPoco , explica algunas ventajas con otros ORM. para explicar más
fuente
Creo que ese es el principal beneficio de un Micro-ORM, para obtener los otros beneficios de un ORM necesitaría usar uno completo. Eso y el código es relativamente más pequeño, por lo que si necesita personalizarlo, sería más fácil.
fuente