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 kemudiandog.First().Age
mengakses properti.Jawaban:
Manfaat:
Cukup banyak, jujur saja. Anda memiliki pembungkus yang sangat ringan untuk koneksi sql Anda yang akan melakukan konversi objek untuk Anda. Anda dapat, tentu saja, menyempurnakan pertanyaan tanpa harus berurusan dengan SQL yang dibuat secara otomatis.
Kekurangan:
Mereka memiliki tempat mereka, dan mereka adalah alat yang sangat efektif yang dapat mengambil beberapa "pekerjaan keledai" dari pengembang ketika berinteraksi dengan DB, tetapi pada kenyataannya mereka tidak bisa menggantikan ORM penuh dalam skala besar sistem untuk permintaan yang tidak kritis terhadap kinerja, hanya karena meningkatnya biaya pemeliharaan.
Jika Anda berjuang dengan kinerja pada permintaan DB, saya akan menyarankan bahwa akan lebih baik untuk menggunakan kerangka pemetaan ini hanya dengan Prosedur Tersimpan, untuk mendapatkan indikasi waktu kompilasi apakah SQL Anda valid (plus manfaat kinerja tambahan) .
sumber
Di situs ORP mikro PetaPoco ia menjelaskan beberapa keuntungan dengan ORM lain. untuk menjelaskan lebih lanjut
sumber
Saya percaya itu adalah manfaat utama dari Mikro-ORM, untuk mendapatkan manfaat lain dari ORM Anda harus menggunakan yang penuh sesak nafas. Itu dan kodenya relatif lebih kecil, jadi jika Anda perlu menyesuaikannya, itu akan lebih mudah.
sumber