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 bir şekilde geliştirilemeyecektir.

Özellik karşılaştırması

EF Core, EF6'da uygulanmayacak yeni özellikler sunar. Ancak şu anda EF Core'da tüm EF6 özellikleri uygulanmaz.

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

EF Core sütunu özelliğin ilk göründüğü ü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üşümleri 2.1
Anahtarsız eşlenmiş türler 2.1
Konvansiyonlar Evet 1.0
Özel kurallar Evet 7.0
Veri ek açıklamaları Evet 1.0
Fluent API Evet 1.0
Miras: Hiyerarşi başına tablo (TPH) Evet 1.0
Devralma: Tür başına tablo (TPT) Evet 5.0
Devralma: Her somut sınıf için tablo (TPC) Evet 7.0
Gölge durum özellikleri 1.0
Alternatif tuşlar 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 Bekleme listesinde (#831)
Genel sorgu filtreleri 2.0
Veritabanı tablo bölme Evet 2.0
Varlık bölme Evet 7.0
Veritabanı skaler işlev eşlemesi Fakir 2.0
Veritabanı tablosu değerli işlev eşlemesi Fakir 5.0
Alan eşleme 1.1
Boş değer atanabilir başvuru türleri (C# 8.0) 3.0
Modelin grafik görselleştirmesi Evet Planlı destek yok (1)
Grafik model düzenleyicisi Evet Planlı destek yok (1)
Model biçimi: EDMX (XML) Evet Planlı destek yok (1)
Veritabanından model oluşturma: VS sihirbazı Evet Planlı destek yok (1)

Veri sorgulama

Özellik EF6.4 EF Core
LINQ sorguları Evet 1.0
Okunabilir oluşturulan SQL Fakir 1.0
GroupBy çevirisi Evet 2.1
İlgili veriler yükleniyor: Eager Evet 1.0
İlgili veriler yükleniyor: Türetilmiş türler için istekli yükleme 2.1
İlgili veriler yükleniyor: Gecikmeli Evet 2.1
İlgili veriler yükleniyor: 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 Fakir 2.0
await foreach (C# 8.0) 3.0
Metin tabanlı sorgu dili (Entity SQL) Evet Planlı destek yok (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
Transactions Evet 1.0
İfadelerin toplu işlenmesi 1.0
Saklı yordam eşlemesi Evet 7.0
Bağlantısız grafik alt düzey API'leri Fakir 1.0
Bağlantısı kesilmiş grafik Uçtan uca 1.0 (kısmi; #5536)

Diğer özellikler

Özellik EF6.4 EF Core
Göç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
Kesiciler Evet 3.0
Etkinlikler Evet 3.0 (kısmi; #626)
Basit Günlük (Database.Log) Evet 5.0
DbContext havuzlama 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 veritabanı 3.0
Bellek içi (test için) 1.0

1 Bazı EF6 özellikleri EF Core'da uygulanmaz. Bu özellikler EF6'nın temel varlık veri modeline (EDM) bağlıdır ve/veya nispeten düşük yatırım getirisi olan karmaşık özelliklerdir. Geri bildirimleri her zaman memnuniyetle karşılarız, ancak EF Core EF6'da mümkün olmayan birçok şeyi sağlarken, EF Core'un EF6'nın tüm özelliklerini desteklemesi de mümkün değildir.

Üçüncü taraflar tarafından uygulanan 2 EF Core veritabanı sağlayıcısı, EF Core'un yeni ana sürümlerine güncelleştirilmesinde 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. Daha fazla ayrıntı 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'te 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 kılavuz

EF Core, EF6'nın yerine doğrudan bir ikame değildir. EF6'dan EF Core'a geçmek için büyük olasılıkla uygulamanızda değişiklik yapılması gerekir.

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

  • Veri erişim kodu kararlıysa ve gelişme olasılığı yoksa veya yeni özelliklere ihtiyaç duyuyorsa EF6 kullanmaya devam edin.
  • Veri erişim kodu gelişiyorsa veya uygulamanın yalnızca EF Core'da mevcut yeni özelliklere ihtiyacı varsa, EF Core'a geçirin.
  • EF Core'a taşıma işlemi genellikle performans için de gerçekleştirilir. Ancak, tüm senaryolar daha hızlı değildir, bu nedenle önce bazı profil oluşturma işlemleri yapın.

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