11 Ekim 2026, Pazar
Yazılım

ORM Kavramı ve Entity Framework Core

https://render2web.com/net-6/que-es-entity-framework-core/

Selamlar, bugün sizlere kısa ve öz biçimde ORM Kavramından, Entity Framework Core’dan ve Entity Framework’ü en çok kullanılan iki yaklaşım ile nasıl kullanırız bunlardan bahsedeceğim.

Öneri ve görüşleriniz için bana mail hesabımdan ulaşabilirsiniz.

İçindekiler

ORM (Object-Relational Mapping) Nedir?
ORM’nin Avantajları
Entity Framework ve ORM İlişkisi
LINQ (Language Integrated Query) Nedir?
Lambda İfadeleri Nedir?
Entity Framework Core ve Veri Tabanı İlişkileri
Entity Framework ile Çalışma Yaklaşımları
Hangi Yaklaşımı Kullanmalıyım?
C# ve SQL Veri Türleri Karşılaştırması
C#’da Entity Framework İle Database First Yaklaşımı
C#’da Entity Framework İle Code First Yaklaşımı

ORM (Object-Relational Mapping) Nedir?

ORM (Nesne-İlişkisel Eşleme), nesne yönelimli programlama dillerindeki veri yapılarının (sınıflar, nesneler) ilişkisel veri tabanı tablolarına dönüştürülmesini sağlayan bir tekniktir.

ORM sayesinde SQL sorguları yazmadan nesneler aracılığıyla veri tabanı işlemleri gerçekleştirilebilir. Geleneksel yöntemlerde veri tabanına erişmek için manuel SQL sorguları yazmanız gerekirken, ORM ile veri tabanı işlemleri nesne yönelimli bir yaklaşımla yönetilir.

ORM’nin Avantajları

  • SQL sorguları yazmadan veri tabanına erişim sağladığı için SQL bağımlılığını azaltıyor.
  • CRUD (Create, Read, Update, Delete) işlemlerini daha sade ve okunaklı hale getirerek kod tekrarını azaltıyor.
  • Nesne yönelimli yapılar sayesinde yani nesne- sınıf yapısı ile kodun yönetimi kolaylaştırarak bakımı da kolaylaştırıyor, böylece daha düzenli bir kod yapısı karşımıza çıkıyor.
  • Ayrıaca ORM araçları genellikle farklı veri tabanlarıyla (MSSQL, MySQL, PostgreSQL vb.) uyumludur ve bu sayede taşınabilirliği de sağlamış oluyor.

Entity Framework ve ORM İlişkisi

Entity Framework (EF), .NET ekosisteminde en yaygın kullanılan ORM araçlarından biridir. Code First, Database First ve Model First gibi farklı yaklaşımlarla kullanılıyor.

Eğer Entity Framework kullanıyorsanız, aslında ORM kullanıyorsunuz demektir. Bu sayede, SQL sorgusu yazmadan C# kodlarıyla veri tabanına erişim sağlayabilirsiniz.

LINQ (Language Integrated Query) Nedir?

LINQ, veriler üzerinde sorgu yapmamızı sağlayan bir yapıdır. Normalde bir veri tabanından veri çekmek için SQL sorguları yazmamız gerekir. Ancak LINQ sayesinde SQL yazmadan C# içinde kolayca veri sorguları oluşturabiliriz.

Beraberinde verileri daha okunaklı ve kolay bir şekilde filtrelemek, sıralamak, listelemek gibi işlemleri sağlıyor.

Şimdi hem LINQ hem de Lambda ifadeleri ile bir örnek üzerinden bu anlatımı pekiştirelim. Örneğimizde A” harfiyle başlayan isimleri listeleyelim.

Örnek: Basit LINQ Kullanımı

List<string> users = new List<string> { "Ali", "Ayşe", "Mehmet", "Zeynep" };

// "A" harfi ile başlayanları seçelim
var result = from user in users
where user.StartsWith("A")
select user;

foreach (var user in result)
{
Console.WriteLine(user);
}

Lambda İfadeleri Nedir?

Lambda ifadeleri, LINQ sorgularını daha kısa ve pratik hale getiren bir yazım şeklidir.

Lambda ifadeleri ile daha kısa, anlaşılır ve okunaklı SQL sorguları yazabiliyoruz.

=> işareti kullanılır.

user ifadesi burada geliştiriciye özel bir kullanımdır. Değişken ismi gibi düşünebiliriz. X de yazabilirim, anlamlı bir ifade de yazabilirim.

Örnek: Lambda Kullanımı ile Aynı Sorgu

var result = users.Where(user => user.StartsWith("A"));

foreach (var user in result)
{
Console.WriteLine(user);
}

Entity Framework Core ve Veri Tabanı İlişkileri

Entity Framework Core ile veri tabanındaki tablolar arasındaki ilişkileri modelleyebilirsiniz. Verileri doğru şekilde organize etmek için tablolar arasındaki ilişkileri tanımlamak önemlidir. EF Core, aşağıdaki ilişki türlerini destekler:

  • One-to-One (Bire Bir) İlişki
  • One-to-Many (Bire Çok) İlişki (En yaygın kullanılan)
  • Many-to-Many (Çoktan Çoğa) İlişki

Entity Framework ile Çalışma Yaklaşımları

1. Database First (DB First)

Tanım: Mevcut bir veri tabanından hareketle model (entity sınıfları) oluşturma yaklaşımıdır.

Kullanımı: Halihazırda bir veri tabanınız varsa ve onun üzerinden .NET uygulaması geliştirmek istiyorsanız DB First tercih edilir.

Avantajları:

  • Var olan veri tabanına uyumludur.
  • Büyük ve karmaşık veri tabanlarında model oluşturmayı kolaylaştırır.

Dezavantajları:

  • Veri tabanı şeması değiştiğinde kod güncellenmelidir.
  • Daha az esneklik sunar.

2. Code First

Tanım: Veri tabanı şemasını kod ile tanımlayarak Entity Framework’ün bu kodlardan veri tabanını oluşturmasını sağlayan yaklaşımdır.

Kullanımı: Eğer projeye sıfırdan başlıyorsanız ve veri tabanını kod ile yönetmek istiyorsanız Code First idealdir.

Avantajları:

  • Esnektir ve kod ile yönetilebilir.
  • Migration desteği sayesinde veri tabanı güncellenebilir.

Dezavantajları:

  • Var olan veri tabanlarıyla çalışmak zor olabilir.
  • SQL’e alışık olanlar için başlangıçta karmaşık gelebilir.

3. Model First (Pek sık kullanılmaz. Bu yüzden bu yaklaşımın kurulumundan bu yazıda bahsetmeyeceğim.)

Tanım: Öncelikle bir model (görsel araçlarla) oluşturup, daha sonra bu modelden veri tabanını oluşturmaya dayanan yaklaşımdır.

Avantajları:

  • Görsel modelleme imkanı sunar.
  • Teknik bilgisi az olanlar için daha kolaydır.

Dezavantajları:

  • Büyük projelerde yönetimi zor olabilir.
  • Manuel düzenleme yapmayı zorlaştırabilir.

Hangi Yaklaşımı Kullanmalıyım?

  • Mevcut bir veri tabanınız varsa → Database First
  • Sıfırdan bir proje geliştiriyorsanız → Code First
  • Görsel araçlarla modelleme yapmak istiyorsanız → Model First

C# ve SQL Veri Türleri Karşılaştırması

SQL Server’da kullanılan veri türlerinin C#’daki karşılığı.

C#’da Entity Framework İle Database First Yaklaşımını Ekleme

Daha önceden hazırlanmış olan SQL Server Veri Tabanına ait Diyagram

Database First yaklaşımını kullanacağımız projemizde Solution Explorer’da projeye sağ tıklayıp “New Item” seçeneği ile sol tarafta bulunan Data bölümünden “ADO.NET Entity Data Model” seçeneğini programımıza ekliyoruz.

Bu kısmın açılması için 3. ekran görüntüsünde bulunan Show All Templates’e tıklamanız yeterli olacaktır.

Solution Explorer
ADO.NET Entity Data Model

Sonraki sayfada bizi 4 farklı seçeneğin karşıladığı bir ekranla karşılaşıyoruz. “EF Designer from database” seçeneğini seçip ilerliyoruz.

Burada seçeneklerin anlamları ise şudur:

  • EF Designer from database: Veri Tabanı kullanılarak Database First yaklaşımı taslağı (Bu aşamada bu seçeneği kullanacağız, çünkü bizim hazır bir veri tabanımız var.)
  • Empty EF Designer Model: Boş bir Model First yaklaşımı taslağı
  • Empty Code First model: Veri tabansız boş bir Code First yaklaşımı taslağı
  • Code First from database: Mevcut bir veri tabanı üzerinden Code First yaklaşımı taslağı
Entity Data Model Wizard ile Yaklaşım Seçim Ekranı

Sonraki ekranda Veri tabanınızı eklemeniz gerekiyor.

“New Connection” seçeneğine tıklayıp açılan sekmede “Server Name” kısmını 3. ve 4. ekran görüntülerindeki adımları takip ederek 5. ekran görüntüsündeki seçenek gibi dolduruyoruz.

Veri tabanımızı seçtikten sonra ki bu ayar her bilgisayarda gözükmemekle birlikte oldukça yaygındır “Trust Server Certificate”i seçiyoruz ve alt tarafta projemizde hangi veri tabanını kullanacaksanız onu seçiyorsunuz.

Bu projede “DbSinavOgrenci” isimli veri tabanımı kullanacağım. 2. ekran görüntüsünde next ile devam ediyoruz, 3. ekran görüntüsünde ise projede kullanılacak Entity Framework sürümünü seçip ilerliyoruz.

Sonraki sekmede seçtiğimiz veri tabanındaki hangi tabloların projeye dahil edileceğini seçiyoruz ve böylece kurulumu tamamlamış oluyoruz.

Entity Data Model Wizard ile Yaklaşım Seçim Ekranı
Entity Data Model Wizard ile Yaklaşım Seçim Ekranı
C#’da Bu Tabloların Görünümü

C#’da Entity Framework İle Code First Yaklaşımını Ekleme

Code First yaklaşımını kullanacağımız projemizde Solution Explorer’da projeye sağ tıklayıp Manage Nuget Packages seçeneği ile Entity Framework paketini dahil etmeliyiz.

Entity Framework Paketi

Projede Entity adında klasör oluşturup içerisine Urunler isminde bir sınıf oluşturacağız. Bu sınıf SQL tarafındaki tabloya eşit.

Bu sınıf içerisinde prop’ları oluşturuyoruz. Bu prop’lar bizim SQL’deki ürünler tablosu içindeki sütunlara eş değer.

Not: UrunID kısmına [Key] attribute’ünü DataAnnotations kütüphanesi yardımı ile ekliyoruz. Bu işlem yapılmaz ise hata alma olasılığınız yüksek olacaktır.

Burada Urunler tablosundaki UrunID’yi Primary Key yani birincil anahtar yapıyoruz.

Entity klasörü içerisindeki Urunler.cs Sınıfı

Bu aşamada Tablolarımızı SQL tarafına yazdıracak olan, SQL’de oluşturacak olan bir context sınıfına ihtiyacımız var.

Tekrar klasörde sağ tık ile Context adında bir sınıf oluşturdum. Sınıf içerisine using.System.Data.Entity; kod satırı ile kütüphaneyi ekliyorum.

Oluşturduğumuz Context sınıfını DbContext’den miras aldırdık.

DbContext, Entity Framework Core’un veri tabanı ile iletişim kurmasını sağlayan bir sınıftır.

Bu sınıf, arka planda veri tabanı bağlantısını yönetir ve CRUD (Create, Read, Update, Delete) işlemlerini gerçekleştirir.

Her talep (request) için bir DbContext örneği oluşturulur.

Entity klasörü içerisindeki Context.cs Sınıfı

Bağlantı işlemleri için app.config içerisine veri tabanı bağlantı cümlemizi yazacağız. Veri tabanı cümlesini ekte gösterildiği yerde ve o kullanım sırasına göre eklemeniz gerekiyor.

app.config
 <connectionStrings>
<add name="Context" connectionString="Server=DESKTOP-ETDCBMJ\SQLEXPRESS; Database=ProjeCodeFirst; Trusted_Connection=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>

Database=ProjeCodeFirst; ile veri tabanının SQL’e hangi isim ile kayıt edileceğini belirliyorsunuz.

connectionString’e veri tabanı ifadenizi ekliyorsunuz.

Veri tabanı ifadenizi SQL Server Management Studio’da buradan alabilirsiniz.

Son olarak veri tabanımızın oluşturulması için formun load’ında aşağıdaki kod parçasını yazıyoruz.

Ancak bunun için ilk önce projeye using EntityCodeFirst.Entity; kod satırı ile kütüphaneyi ekliyoruz. Kütüphaneyi ve aşağıdaki kod satırını da ekleyip projeyi çalıştırdığınızda SQL tarafında veri tabanımız ve tablomuz gelmiş olacak.

Projeyi çalıştırdıktan sonra SQL Server Management Studio’da veri tabanınızı görebilirsiniz.

Final

Sonuç

ORM, veri tabanı işlemlerini kolaylaştıran ve nesne yönelimli programlama ile uyumlu çalışan bir teknolojidir. Entity Framework, .NET projelerinde en yaygın kullanılan ORM araçlarından biridir.

Database First, Code First ve Model First gibi farklı yaklaşımlarla çalışabilir, ihtiyacınıza göre uygun olanı seçebilirsiniz.

ASP.NET Core projelerinde Code First sık tercih edilirken, var olan bir veri tabanıyla çalışıyorsanız Database First kullanabilirsiniz.

EF Core ile veri tabanı işlemleri SQL sorgularına ihtiyaç duymadan, nesne yönelimli bir yapıda kolayca yönetilebilir.

Bu yazı ilk olarak Medium'da yayımlandı.

Yazılım kategorisinden

Tümü →

Aklınızda bir proje mi var?

Kurumsal web sitesi, mobil uygulama ya da e-dönüşüm... İşletmenize uygun dijital çözümü birlikte netleştirelim.

Konuşalım