EF Core ve EF6 Karşılaştırması

EF Core

Entity Framework Core (EF Core), .NET için modern bir nesne-veritabanı eşleyicidir. LINQ sorgularını, değişiklik izlemeyi, güncelleştirmeleri ve şema geçişlerini destekler.

EF Core; veritabanı sağlayıcısı eklenti modeli aracılığıyla SQL Server/Azure SQL Veritabanı, SQLite, Azure Cosmos DB, MySQL, PostgreSQL ve daha birçok veritabanıyla çalışır.

EF6

Entity Framework 6 (EF6), .NET Framework için tasarlanmış ancak .NET Core desteğine sahip bir nesne ilişkisel eşleyicidir. EF6 kararlı ve desteklenen bir üründür ancak artık etkin olarak geliştirilmemektedir.

Özellik karşılaştırması

EF Core, EF6'da uygulanmayacak yeni özellikler sunar. Ancak, EF6 özelliklerinin tümü şu anda EF Core'da uygulanmamaktadır.

Aşağıdaki tablolarda EF Core ve EF6'da kullanılabilen özellikler karşılaştırılmaktadır. Bu, üst düzey bir karşılaştırmadır ve her özelliği listelemez ve aynı özelliğin farklı EF sürümleri arasındaki farkları açıklamaz.

EF Core sütunu, özelliğin ilk tanıtıldığı ürün sürümünü gösterir.

Model Oluşturma

Özellik EF6.4 EF Core
Temel sınıf eşlemesi Evet 1.0
Parametreleri olan oluşturucular 2.1
Özellik değeri dönüştürmeleri 2.1
Anahtarsız eşlenmiş türler 2.1
Kurallar Evet 1.0
Özel kurallar Evet 7.0
Veri açıklamaları Evet 1.0
Fluent API Evet 1.0
Devralma: Hiyerarşi başına tablo (TPH) Evet 1.0
Devralma: Tür başına tablo (TPH) Evet 5.0
Devralma: Somut sınıf başına tablo (TPC) Evet 7.0
Gölge durum özellikleri 1.0
Alternatif anahtarlar 1.0
Çoka çok gezintiler Evet 5.0
Birleştirme varlığı olmadan çoka çok Evet 5.0
Anahtar oluşturma: Veritabanı Evet 1.0
Anahtar oluşturma: İstemci 1.0
Karmaşık/sahip olunan türler Evet 2.0
Uzamsal veriler Evet 2.2
Model biçimi: Kod Evet 1.0
Veritabanından model oluşturma: Komut satırı Evet 1.0
Modeli veritabanından güncelleştirme Kısmi Kapsam üzerinde (#831)
Genel sorgu filtreleri 2.0
Tablo bölme Evet 2.0
Varlık bölme Evet 7.0
Veritabanı skaler işlev eşlemesi Kötü 2.0
Veritabanı tablosu değerli işlev eşlemesi Kötü 5.0
Alan eşleme 1.1
Null atanabilir başvuru türleri (C# 8.0) 3.0
Modelin grafik görselleştirmesi Evet Destek planlanmıyor (1)
Grafik model düzenleyicisi Evet Destek planlanmıyor (1)
Model biçimi: EDMX (XML) Evet Destek planlanmıyor (1)
Veritabanından model oluşturma: VS sihirbazı Evet Destek planlanmıyor (1)

Veri sorgulama

Özellik EF6.4 EF Core
LINQ sorguları Evet 1.0
Okunabilir oluşturulan SQL Kötü 1.0
GroupBy çevirisi Evet 2.1
İlgili verileri yükleme: Etraflı Evet 1.0
İlgili verileri yükleme: Türetilmiş türler için etraflı yükleme 2.1
İlgili verileri yükleme: Gecikmeli Evet 2.1
İlgili verileri yükleme: Açık Evet 1.1
Ham SQL sorguları: Varlık türleri Evet 1.0
Ham SQL sorguları: Anahtarsız varlık türleri Evet 2.1
Ham SQL sorguları: LINQ ile oluşturma 1.0
Açıkça derlenmiş sorgular Kötü 2.0
await foreach (C# 8.0) 3.0
Metin tabanlı sorgu dili (Entity SQL) Evet Destek planlanmıyor (1)

Verileri kaydetme

Özellik EF6.4 EF Core
Değişiklik izleme: Anlık görüntü Evet 1.0
Değişiklik izleme: Bildirim Evet 1.0
Değişiklik izleme: Proxy'ler Evet 5.0
İzlenen duruma erişme Evet 1.0
İyimser eşzamanlılık Evet 1.0
Hareketler Evet 1.0
Deyimleri toplama 1.0
Saklı yordam eşlemesi Evet 7.0
Bağlantısı kesilmiş grafik alt düzey API'leri Kötü 1.0
Bağlantısı kesilmiş grafik Uçtan uca 1.0 (kısmi; #5536)

Diğer özellikler

Özellik EF6.4 EF Core
Geçişler Evet 1.0
Veritabanı oluşturma/silme API'leri Evet 1.0
Tohum verileri Evet 2.1
Bağlantı dayanıklılığı Evet 1.1
Durdurucular Evet 3.0
Olaylar Evet 3.0 (kısmi; #626)
Basit Günlük (Database.Log) Evet 5.0
DbContext havuzu oluşturma 2.0

Veritabanı sağlayıcıları (2)

Özellik EF6.4 EF Core
SQL Server Evet 1.0
MySQL Evet 1.0
PostgreSQL Evet 1.0
Oracle Evet 1.0
SQLite Evet 1.0
SQL Server Compact Evet 1.0 (3)
DB2 Evet 1.0
Firebird Evet 2.0
Jet (Microsoft Access) 2.0 (3)
Azure Cosmos DB 3.0
Bellek içi (test için) 1.0

1 Bazı EF6 özellikleri EF Core'da uygulanmayacaktır. Bu özellikler EF6'nın temel Varlık Veri Modeline (EDM) bağımlıdır ve/veya görece düşük yatırım getirisi olan karmaşık özelliklerdir. Geri bildirimleri her zaman memnuniyetle karşılıyoruz, ancak EF6'da mümkün olmayan birçok şeyi sağlasa da EF Core'un EF6'nın tüm özelliklerini desteklemesi mümkün değildir.

2 Üçüncü taraflarca uygulanan 2 EF Core veritabanı sağlayıcıları EF Core'un yeni ana sürümlerine güncelleştirilmede gecikebilir. Daha fazla bilgi için bkz. Veritabanı Sağlayıcıları.

3 SQL Server Compact ve Jet sağlayıcıları yalnızca .NET Framework üzerinde çalışır (.NET Core'da çalışmaz).

Desteklenen platformlar

EF Core 3.1, .NET Standard 2.0 kullanarak .NET Core ve .NET Framework üzerinde çalışır. Ancak EF Core 5.0, .NET Framework üzerinde çalışmaz. Diğer ayrıntılar için bkz. Platformlar.

EF6.4, çoklu hedefleme aracılığıyla .NET Core ve .NET Framework üzerinde çalışır.

Yeni uygulamalar için rehberlik

Uygulamanın yalnızca .NET Framework'de desteklenen bir şeye ihtiyacı olmadığı sürece tüm yeni uygulamalar için .NET Core üzerinde EF Core kullanın.

Mevcut EF6 uygulamaları için rehberlik

EF Core EF6'nın yerine almamaktadır. EF6'dan EF Core'a geçmek için büyük olasılıkla uygulamanızda değişiklik yapılması gerekir.

Bir EF6 uygulamasını .NET Core'a taşırken:

  • Veri erişim kodu kararlıysa ve gelişmesi veya yeni özelliklere ihtiyaç duyması olasılığı yoksa EF6 kullanmaya devam edin.
  • Veri erişim kodu gelişiyorsa veya uygulamanın yalnızca EF Core'da bulunan yeni özelliklere ihtiyacı varsa EF Core'a taşıyın.
  • EF Core'a taşıma işlemi sıklıkla performans için de yapılır. Ancak, tüm senaryolar daha hızlı değildir, bu nedenle önce profil çıkarın.

Daha fazla bilgi için bkz. EF6'dan EF Core'a taşıma.