Ho esaminato i cosiddetti "Micro ORM" come Dapper e (in misura minore in quanto si basa su .NET 4.0) Enormi in quanto potrebbero essere più facili da implementare sul lavoro rispetto a un ORM completo dal nostro sistema attuale dipende fortemente dalle procedure memorizzate e richiederebbe un significativo refactoring per funzionare con un ORM come NHibernate o EF. Qual è il vantaggio di utilizzare uno di questi su un ORM completo? Sembra solo uno strato sottile intorno una connessione al database che le forze ancora di scrivere SQL prime - forse mi sbaglio, ma mi ha sempre detto che la ragione per ORM in primo luogo, è così non è stato necessario scrivere SQL, potrebbe essere generato automaticamente; specialmente per i join multi-tabella e le relazioni di mappatura tra tabelle che sono una seccatura da fare in SQL puro ma banali con un ORM.
Ad esempio, guardando un esempio di Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
In che modo è diverso dall'uso di un livello dati ADO.NET gestito a mano, tranne per il fatto che non è necessario scrivere il comando, impostare i parametri e suppongo di mappare nuovamente l'entità usando un Builder. Sembra che potresti persino usare una chiamata di procedura memorizzata come stringa SQL.
Ci sono altri vantaggi tangibili che mi mancano qui in cui un ORM Micro ha senso usare? Non vedo davvero come stia risparmiando qualcosa sul "vecchio" modo di usare ADO.NET tranne forse alcune righe di codice - devi ancora scrivere per capire quale SQL devi eseguire (che può diventare peloso) e devi ancora mappare le relazioni tra le tabelle (la parte con cui gli ORM IMHO aiutano di più).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
e quindi dog.First().Age
per accedere alle proprietà.