Saya telah melihat apa yang disebut "Mikro ORM" seperti Dapper dan (pada tingkat yang lebih rendah karena bergantung pada. NET 4.0) Besar-besaran karena ini mungkin lebih mudah untuk diterapkan di tempat kerja daripada ORM full-blown sejak sistem kami saat ini sangat bergantung pada prosedur tersimpan dan akan membutuhkan refactoring yang signifikan untuk bekerja dengan ORM seperti NHibernate atau EF. Apa manfaat menggunakan salah satu dari ini di atas ORM berfitur lengkap? Sepertinya hanya lapisan tipis di sekitar koneksi database yang masih memaksa Anda untuk menulis SQL mentah - mungkin saya salah tetapi saya selalu diberitahu alasan ORM di tempat pertama adalah sehingga Anda tidak perlu menulis SQL, itu dapat secara otomatis dihasilkan; terutama untuk multi-tabel bergabung dan memetakan hubungan antara tabel yang sulit dilakukan dalam SQL murni tetapi sepele dengan ORM.
Misalnya, melihat contoh Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
Bagaimana itu berbeda dari menggunakan lapisan data ADO.NET yang dikontrol, kecuali bahwa Anda tidak harus menulis perintah, mengatur parameter dan saya kira memetakan entitas kembali menggunakan Builder. Sepertinya Anda bahkan bisa menggunakan panggilan prosedur tersimpan sebagai string SQL.
Apakah ada manfaat nyata lainnya yang saya lewatkan di sini di mana ORM Mikro masuk akal untuk digunakan? Saya tidak benar-benar melihat bagaimana ini menghemat apa pun melalui cara "lama" menggunakan ADO.NET kecuali mungkin beberapa baris kode - Anda masih harus menulis untuk mencari tahu apa yang perlu Anda jalankan SQL (yang bisa menjadi berbulu) dan Anda masih harus memetakan hubungan antar tabel (bagian yang paling membantu dengan ORM IMHO).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
dan kemudian dog.First().Age
mengakses properti.