ฉันได้มองหาสิ่งที่เรียกว่า "Micro ORMs" เช่น Dapper และ (ในระดับที่น้อยกว่าเนื่องจากอาศัย. NET 4.0) ขนาดใหญ่เนื่องจากสิ่งเหล่านี้อาจจะง่ายต่อการใช้งานในที่ทำงานมากกว่า ORM แบบเต็มเป่าตั้งแต่ระบบปัจจุบันของเรา มีความเชื่อมั่นอย่างสูงในขั้นตอนการจัดเก็บและจะต้องมีการปรับโครงสร้างที่สำคัญในการทำงานกับ ORM เช่น NHibernate หรือ EF ประโยชน์ของการใช้หนึ่งในสิ่งเหล่านี้ผ่าน ORM ที่มีคุณลักษณะครบถ้วนคืออะไร ดูเหมือนว่าเป็นเพียงเลเยอร์เล็ก ๆ รอบ ๆ การเชื่อมต่อฐานข้อมูลที่ยังคงบังคับให้คุณเขียน SQL ดิบ - บางทีฉันผิด แต่ฉันก็มักจะบอกเหตุผลของ ORMs ตั้งแต่แรกคือคุณไม่ต้องเขียน 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 แบบ handrolled ได้อย่างไรยกเว้นว่าคุณไม่จำเป็นต้องเขียนคำสั่งตั้งค่าพารามิเตอร์และฉันคิดว่าการแมปเอนทิตีกลับมาโดยใช้ตัวสร้าง ดูเหมือนว่าคุณสามารถใช้การเรียกโพรซีเดอร์ที่เก็บไว้เป็นสตริง SQL ได้
มีประโยชน์ที่จับต้องได้อื่น ๆ ที่ฉันขาดไปจากที่นี่ที่ Micro ORM เหมาะสมหรือไม่? ฉันไม่ได้เห็นว่ามันช่วยอะไรได้บ้างในแบบ "เก่า" ของการใช้ ADO.NET ยกเว้นรหัสบางบรรทัด - คุณยังต้องเขียนเพื่อคำนวณว่า SQL ที่คุณต้องใช้ในการประมวลผล (ซึ่งอาจมีขนดก) และ คุณยังต้องแมปความสัมพันธ์ระหว่างตาราง (ส่วนที่ IMHO ORMs ช่วยมากที่สุดด้วย)
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
และdog.First().Age
เข้าถึงคุณสมบัติ