TEMEL
Giriş
Bu doküman, Entity Framework Core ile çalışan .NET geliştiricileri için kapsamlı bir başvuru kaynağıdır. Başlangıç seviyesinden uzman konulara kadar kademeli bir öğrenme yolu sunar.
Entity Framework Core 8 / 9 / 10 · Son güncelleme: Mayıs 2026
.NET 8 / 9 / 10 uyumlu · SQL Server & PostgreSQL örnekleri · 49 bölüm · 240+ kod örneği
Nasıl kullanılır?
- Temel — EF Core'a yeni başlıyorsan buradan başla. DbContext, property, index temelleri.
- Orta — İlişkiler, migration, change tracking gibi günlük geliştirmede sürekli kullanacağın konular.
- İleri — Owned entities, inheritance, concurrency, testing gibi mimari kararları etkileyen konular.
- Uzman — Interceptors, multi-tenancy, audit trail gibi production-grade pattern'lar.
- Referans — Hızlı bakış tabloları, annotations özeti, provider karşılaştırması.
Her bölümde: Fluent API kodu → üretilen SQL → açıklayıcı diyagram → pratik ipuçları → sık yapılan hatalar.
Örnekler SQL Server ve PostgreSQL üzerinden verilmiştir. Provider'a özgü farklar için → Bölüm 41
EF Core Ne Zaman Kullanmalı, Ne Zaman Kullanmamalı?
EF Core iyi bir tercih:
- Tipik web API / MVC uygulamaları (CRUD işlemleri)
- İş kuralları olan domain modelleri (ilişkiler, validasyonlar)
- Migration ile veritabanı şemasını kod olarak yönetmek istiyorsan
- Transaction yönetimi gereken işlemler
Bu durumlarda EF Core'un doğru özelliğini seç:
| Durum | Sorun (basitçe) | EF Core Çözümü |
|---|---|---|
| Çok büyük veri aktarımı (100K+ satır) | Her satırı ayrı ayrı izler → yavaş | ExecuteUpdate / ExecuteDelete + SqlBulkCopy (ADO.NET) |
| Sadece veri okuma (raporlama) | Her satır için C# nesnesi oluşturur, ağır | .AsNoTracking() + projeksiyon (Select) |
| Zaten stored procedure kullanıyorsun | SP zaten işi yapıyor | FromSqlInterpolated ile SP çağır |
| Çok basit 2-3 tabloluk uygulama | Konfigürasyon yükü fazla gelebilir | Minimal API + DbContext (tek dosyada bile çalışır) |
EF Core tek başına yeterli: Change tracking gereksizse
AsNoTracking(), toplu işlem gerekiyorsaExecuteUpdate/Delete, ham SQL gerekiyorsaFromSqlInterpolatedkullan. İlerledikçe her birini detaylı göreceksin.