Çıraklığım sırasında, çoğunlukla kendi başıma kodlayıp tasarladığım bazı küçük projeler için NHibernate kullandım . Şimdi, daha büyük bir projeye başlamadan önce, veri erişiminin nasıl tasarlanacağı ve bir ORM katmanının kullanılıp kullanılmayacağı tartışıldı. Hâlâ çıraklık dönemimde olduğum ve kendimi kurumsal programlamada yeni başlayan biri olarak gördüğüm için, bence gerçekten zorlamaya çalışmadım, bu da veritabanına bir nesne ilişkisel eşleştiricisi kullanmak gelişimi oldukça kolaylaştırabilir. Geliştirme ekibindeki diğer kodlayıcılar benden çok daha deneyimli, bu yüzden sadece dediklerini yapacağımı düşünüyorum. :-)
Bununla birlikte, NHibernate veya benzer bir projeyi kullanmamanın ana nedenlerinden ikisini tam olarak anlamıyorum:
- Kişi yalnızca SQL sorguları ile kendi veri erişim nesnelerini oluşturabilir ve bu sorguları Microsoft SQL Server Management Studio dışına kopyalayabilir.
- Bir ORM'de hata ayıklamak zor olabilir.
Yani, elbette veri erişim katmanımı çok sayıda SELECT
s vb. İle oluşturabilirim, ancak burada otomatik birleştirmelerin, tembel yükleme proxy sınıflarının ve bir tablo yeni bir sütun alırsa veya bir sütun alırsa daha az bakım çabasının avantajını özlüyorum yeniden adlandırıldı. (Sayısız güncellenmesi SELECT
, INSERT
ve UPDATE
haritalama yapılandırma güncellenmesi ve muhtemelen iş sınıfları ve DTOs üstlenmeden vs sorgular.)
Ayrıca, çerçeveyi çok iyi bilmiyorsanız, NHibernate'i kullanarak öngörülemeyen sorunlarla karşılaşabilirsiniz. Bu, örneğin, otomatik olarak doğrulanacak bir dizenin uzunluğunu ayarladığınız Table.hbm.xml dosyasına güvenmek olabilir. Ancak, "basit" bir SqlConnection sorgu tabanlı veri erişim katmanında da benzer hataları hayal edebiliyorum.
Son olarak, yukarıda bahsedilen argümanlar, önemsiz olmayan bir veritabanı tabanlı kurumsal uygulama için bir ORM kullanmamak için gerçekten iyi bir neden mi? Muhtemelen kaçırmış olabileceğim başka argümanlar var mı?
(Muhtemelen bunun, ekip çalışması gerektiren ilk "büyük" .NET / C # tabanlı uygulama gibi olduğunu düşündüğümü eklemeliyim. Stack Overflow'da oldukça normal görülen birim testi veya sürekli entegrasyon gibi iyi uygulamalar, -şimdiye kadar burada mevcuttur.)