Я розглядав так звані "мікро-ORM", як Dapper, і (в меншій мірі, оскільки він покладається на .NET 4.0) масивний, оскільки це може бути легше впровадити на роботі, ніж повноцінний ORM з нашої нинішньої системи дуже залежить від збережених процедур і потребує значного рефакторингу для роботи з ОРМ, як NHibernate або EF. Яка користь від використання одного з них у повнофункціональному ORM? Це здається просто тонким шаром навколо з'єднання з базою даних, який все ще змушує вас писати необроблений SQL - можливо, я помиляюся, але мені завжди казали причину ORM в першу чергу, тому вам не довелося писати SQL, це можна автоматично генерувати; особливо для приєднань до декількох таблиць та відображення взаємозв'язків між таблицями, які є більшим завданням у чистому SQL, але тривіально з ORM.
Наприклад, дивлячись на приклад Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
Як це відрізняється від використання рівня керованого рівня даних ADO.NET, за винятком того, що вам не потрібно писати команду, встановлювати параметри, і я припускаю, що об'єднати об'єкт назад за допомогою Builder. Схоже, ви навіть можете використовувати збережений виклик процедури як рядок SQL.
Чи є інші відчутні переваги, які мені не вистачає, де Micro ORM має сенс використовувати? Я насправді не бачу, як це економить що-небудь на "старому" способі використання ADO.NET, за винятком, можливо, декількох рядків коду - вам все одно потрібно написати, щоб зрозуміти, який SQL потрібно виконати (який може бути волохатим) і вам все одно доведеться відображати взаємозв'язки між таблицями (частина, з якою найбільше допомагають ІМХО ORM).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
а потім dog.First().Age
отримати доступ до властивостей.