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 luego dog.First().Age
para acceder a las propiedades.