Dapper FluentMap 3.6: 2.0'dan bugüne neler değişti
Altı yıl sonra yeni kararlı sürüm çıkaran Dapper FluentMap, 3.6.0 ile nested mapping, converter, izole runtime, analyzer ve source generator gibi yeni yetenekler kazandı. Yazar, mevcut uygulamaların bozulmadan yükseltilebilmesini temel ilke olarak anlatıyor. 2.0 kullananlar için yükseltme adımları ve dikkat edilecek noktalar burada.
Kilit noktalar
- Mevcut Initialize ve AddMap tabanlı yapılandırma 3.x'te de çalışır; yükseltme için çoğu zaman entity'leri yeniden yazmak gerekmez.
- İç içe property eşlemesi için sorguda QueryMappedSingle gibi FluentMap'in özel materialization API'lerini kullanın; standart Dapper sorgusu bu yapıyı kurmaz.
- İzole yapılandırma gerekiyorsa FluentMapConfigurationBuilder ile runtime oluşturun; global state'ten kaçınmak için kullanışlıdır.
- Dommel ile yazma işlemlerinde Ignore() yerine DatabaseDefaultOnInsert(), ReadOnly() ve Computed() metadata'larını tercih edin.
- 2.0.0'dan geçerken Dapper 2.1.79 ve üzeri (3.0.0 altı) ile Dommel 3.5.3 ve üzeri (4.0.0 altı) sürümlerini doğrulayın.
- Kullandığınız veritabanının sertifikalı olup olmadığını kontrol edin; Oracle ve Firebird için Dommel sertifikası yoktur.
Dapper FluentMap, entity özelliklerini veritabanı kolonlarına domain sınıflarına attribute eklemeden eşleyen bir kütüphane. 2.0.0 sürümünden sonra uzun süre kararlı sürüm çıkmadı; 2026'da bakımı devralındı ve 13 Ekim 2026'da 3.6.0 yayımlandı. Geliştirmenin ana ilkesi, mevcut Initialize ve AddMap tabanlı kullanımı bozmadan yeni özellikler eklemek.
Sürüm 3.x ile iç içe property eşlemesi, mapping profile'ları, property converter'lar ve ConstructUsing ile açık nesne oluşturma geldi. İzole yapılandırma için FluentMapRuntime ve FluentMap.DependencyInjection paketi var; Dapper.Query<T>() çağrıları yine global type map'leri kullanıyor. FluentMap.Analyzers ve FluentMap.Generators paketleri derleme zamanında kontrol ve kod üretimi sağlıyor. Dommel tarafında DatabaseDefaultOnInsert, ReadOnly ve Computed metadata'ları geldi. SQLite, SQL Server, PostgreSQL, MySQL ve MariaDB tam sertifikalı; Oracle ve Firebird yalnızca Core tarafında sertifikalı.
Gerçek dünyada kullanımı
- Eski bir veritabanına bağlanan ve kolon adları entity property'leriyle uyuşmayan bir servis katmanı, attribute kirliliği olmadan eşlemeyi koruyabilir.
- Paralel testlerde farklı mapping setleriyle çalışan bir ekip, FluentMapRuntime ile global konfigürasyon çakışmasını önleyebilir.
- DDD tarzı bir uygulamada value object içeren entity'leri QueryMappedSingle ile okuyan bir veri erişim katmanı.
Neden önemli
Dapper ile FluentMap kullanan bir uygulamayı yükseltmeden önce mevcut mapping kayıtlarını, Dommel yazma davranışlarını ve bağımlılık sürüm aralıklarını doğrulamak gerekir. Yeni özellikler isteğe bağlı olduğu için yükseltme tek başına kod değişikliği gerektirmeyebilir.