Dapper gibi "Micro ORM'ler" denilen ve (.NET 4.0'a dayandığı kadar az miktarda) araştırıyorum. Bunlar, mevcut sistemimizden bu yana tam gelişmiş bir ORM'den daha kolay uygulanabiliyor. saklı yordamlara oldukça bağımlıdır ve NHibernate veya EF gibi bir ORM ile çalışmak için önemli bir yeniden düzenleme gerektirir. Bunlardan birini tam özellikli bir ORM üzerinden kullanmanın faydası nedir? Sizi hala ham SQL yazmaya zorlayan bir veritabanı bağlantısı etrafındaki ince bir katman gibi görünüyor - belki yanlıştır ama her zaman ilk sırada ORM'lerin nedeninin her zaman SQL yazmak zorunda kalmaması gerektiği söylendi. otomatik olarak oluşturulabilir; özellikle çok masalı birleştirmeler ve saf SQL'de yapılması zor olan ama bir ORM ile önemsiz olan tablolar arasındaki ilişkilerin haritalanması için.
Örneğin, bir Dapper örneğine bakarak:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
Bu, elle yazılmış bir ADO.NET veri katmanını kullanmaktan ne kadar farklıysa, komutu yazmak zorunda olmamanız dışında, parametreleri ayarlayın ve sanırım bir Oluşturucu kullanarak varlığı tekrar eşleştirin. Saklı yordam çağrısı bile SQL dizesi olarak kullanabiliyorsunuz gibi görünüyor.
Bir Micro ORM kullanmanın mantıklı olduğu burada kaçırdığım başka somut faydalar var mı? ADO.NET kullanmanın "eski" yolunda, belki de birkaç kod satırı dışında bir şeyden nasıl tasarruf sağladığını gerçekten göremiyorum - hala hangi SQL'i (hangi tüylü hale getirebilir) çalıştırmanız gerektiğini bulmak için yazmanız gerekir. Tablolar arasındaki ilişkileri haritalandırmanız gerekir (IMHO ORM'lerin en çok yardım ettiği kısım).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
ve sonra dog.First().Age
özelliklere erişmek için.