Dapper ve Entity Framework ORM araçlarının karşılaştırılması

Oğuz Can Genç
3 min readNov 16, 2020

--

Geliştirdiğimiz yazılımsal uygulamalarda eskiden veri tabanı ile C# ilini haberleşirilmesini sağlayan veriye erişim teknolojisi olarak .Net Framework çatısı altında bulunan ADO.NET teknolojisi kullanılıyordu. Gelişen teknoloji gün geçtikçe yazılımda da bazı yenilikleri beraberinde getirdi. Bunlardan biri ise ORM teknolojisidir.

Başlangıçta ORM’in ne olduğunu, ORM aracının ne anlama geldiğini, mikro ORM kavramlarını kısaca açıklamaya çalışacağım.

ORM teknolojisi bir konsept olmakla beraber asıl işi ORM araçları üstlenmektedir. ORM temel olarak veri tabanından veriyi OOP kuralları çerçevesinde sorgulamaya ve düzenlemeye olanak tanır. ORM araçları veri tabanına bağımlı değildir bu sayede bir yazılım projesinde farklı veri tabanı teknolojileri kullanılabilir. Birçok dilin birden fazla ORM aracı bulunabilir ve bu araçlar temelde aynı işi yapmasına karşı ihtiyaçlara göre kullanımı değişkenlik gösterebilir.

Programlama dillerinde kullanılan ORM araçları ;

  • C#: Dapper, Entity Framework, XPO, ECO, NHibernate
  • Java: Hibernate, Ebean, EclipseLink, JDO, DataNucleus
  • Python: Django, SQLAlcemy, SQL Object, Storm

Yazımızda .NET platformuna mensub olan Dapper ve Entity Framework & Core ORM araçlarının karşılaştırmasını ele alacağız.

Dapper

Dapper mikro ORM aracıdır ve .Net platformunda kullanılır. StackOverFlow geliştiriciler tarafından tamamen açık kaynak olmak üzere geliştirilmiştir. LightWight olması ve Mapping için bir arayüze sahip olmaması hasebiyle ihtiyaca yönelik çokca tercih edilen bir ORM aracıdır. Entegrasyonu kolay ve sadece tek bir DLL dosyasından ibarettir.

Entity Framework

Entity Framework Microsoft tarafından geliştirilmiş ve 2008 yılından piyasaya sürülmüştür. ADO.NET tabanlı bir ORM aracıdır. Entity Framework 6.0 sürümünden sonra Entity Framework Core adını almıştır. Bu değişiklikle beraber tüm platformlarda çalışır hale gelmiştir. Şuanda ki kararlı sürümü Entity Framework Core 3.1'dir.

Performans Karşılaştırması

Yaşamımızda bazı konularda verimli olmak için birtakım şeylerden feragat etmemiz aşikar. Basitçe örnek vermek gerekirse iyi bir koşucu olmak için sürekli belirli bir disiplin altında çalışmak gibi gibi.

Dapper ve Entity Framework & Core arasında da performans farklılıkları mevcut. Dapper daha performanslıyken , Entity Framework ise SQL sorgularına bulaşmadan kod yazmaya olanak tanır ama Dapper kadar hızlı değildir.

Bu yazdıklarımı Northwind veri tabanı kullanarak Products tablosundan 45.550 kayıtı Windows Form projesinde Dapper ve Entity Framework & Core araçları ile çağırdığımızda karşılaştığımız sonuç ;

Görüldüğü gibi Dapper Entity Framework’e göre daha hızlı ve Core versiyonlarının da birbirine yakın performans gösterdiğini görüyoruz. Bu testeki saliselik farklar fazlada önem taşımasada yazılım projelerinde ölçek arttıkça bu farklarda belireceği için ORM aracı seçimi önem arzedebilir.

Harcanan Zaman Grafiği

Hafıza Kullanım Grafiği

--

--

Oğuz Can Genç
Oğuz Can Genç

Written by Oğuz Can Genç

Software Developer at @wereprotein

No responses yet