&EF6 EF Core karşılaştırma

EF Core

Entity Framework Core (EF Core), .NET için modern bir nesne veritabanı eşlecidir. 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ı ile çalışır.

EF6

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

Özellik karşılaştırması

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

Aşağıdaki tablolarda, EF Core ve EF6'da kullanılabilen özellikler karşılaştırabilirsiniz. Bu, üst düzey bir karşılaştırmadır ve farklı EF sürümlerindeki tüm özellikleri listeleyene veya aynı özellik arasındaki farkları açıklamaz.

EF Core sütunu, özelliğin ilk kez hangi ürün sürümünün olduğunu gösterir.

Model oluşturma

Özellik EF6.4 EF Core
Temel sınıf eşlemesi Yes 1.0
Parametreleri olan oluşturucular 2.1
Özellik değeri dönüştürmeleri 2.1
Anahtar kullanılmayan eşlenmiş türler 2.1
Kurallar Yes 1.0
Özel kurallar Yes 1.0 (kısmi; #214)
Veri açıklamaları Yes 1.0
Fluent API'si Yes 1.0
Devralma: Hiyerarşi başına tablo (TPH) Yes 1.0
Devralma: Tür başına tablo (TPT) Yes 5.0
Devralma: Somut sınıf başına tablo (TPC) Yes Biriktirme günlüğü üzerinde (#3170)
Gölge durum özellikleri 1.0
Alternatif anahtarlar 1.0
Çoka çok gezintiler Yes 5.0
Birleştirme varlığı olmadan çoka çok Yes 5.0
Anahtar oluşturma: Veritabanı Yes 1.0
Anahtar oluşturma: İstemci 1.0
Karmaşık/sahip olunan türler Yes 2.0
Uzamsal veriler Yes 2,2
Model biçimi: Kod Yes 1.0
Veritabanından model oluşturma: Komut satırı Yes 1.0
Veritabanından modeli güncelleştirme Kısmi Biriktirme günlüğü üzerinde (#831)
Genel sorgu filtreleri 2.0
Tablo bölme Yes 2.0
Varlık bölme Yes Biriktirme günlüğü üzerinde (#620)
Veritabanı skaler işlev eşlemesi Kötü 2.0
Veritabanı tablosu değerli işlev eşlemesi Kötü 5.0
Alan eşlemesi 1.1
Null değere değiştirilebilir başvuru türleri (C# 8.0) 3.0
Modelin grafik görselleştirmesi Yes Planlı destek yok (1)
Grafik model düzenleyicisi Yes Planlı destek yok (1)
Model biçimi: EDMX (XML) Yes Planlı destek yok (1)
Veritabanından model oluşturma: VS sihirbazı Yes Planlı destek yok (1)

Veri sorgulama

Özellik EF6.4 EF Core
LINQ sorguları Yes 1.0
Okunabilir oluşturulmuş SQL Kötü 1.0
GroupBy çevirisi Yes 2.1
İlgili verileri yükleme: İstekli Yes 1.0
İlgili verileri yükleme: Türetilen türler için hızlı yükleme 2.1
İlgili verileri yükleme: Yavaş Yes 2.1
İlgili verileri yükleme: Açık Yes 1.1
Ham SQL sorguları: Varlık türleri Yes 1.0
Ham SQL sorguları: Anahtarsız varlık türleri Yes 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 (Varlık SQL) Yes Planlı destek yok (1)

Verileri kaydetme

Özellik EF6.4 EF Core
Değişiklik izleme: Anlık görüntü Yes 1.0
Değişiklik izleme: Bildirim Yes 1.0
Değişiklik izleme: Proxies Yes 5.0
İzli durumlara erişme Yes 1.0
İyimser eşzamanlılık Yes 1.0
İşlemler Yes 1.0
Deyimleri toplu işleme 1.0
Saklı yordam eşlemesi Yes Biriktirme günlüğü üzerinde (#245)
Bağlantısız grafik alt düzey API'leri Kötü 1.0
Bağlantısı kesilmiş grafik 4-2 1.0 (kısmi; #5536)

Diğer özellikler

Özellik EF6.4 EF Core
Geçişler Yes 1.0
Veritabanı oluşturma/silme API'leri Yes 1.0
Çekirdek verileri Yes 2.1
Bağlantı dayanıklılığı Yes 1.1
Durdurucular Yes 3.0
Ekinlikler Yes 3.0 (kısmi; #626)
Basit Günlük (Database.Log) Yes 5.0
DbContext havuzu 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 Yes 1.0
SQL Server Compact Yes 1.0 (3)
DB2 Yes 1.0
Firebird Yes 2.0
Jet (Microsoft Access) 2.0 (3)
Azure Cosmos DB 3.0
Bellek içinde (test için) 1.0

1 Bazı EF6 özellikleri EF Core. Bu özellikler EF6'nın temel alınan Varlık Veri Modeli (EDM) ve/veya yatırım getirisi nispeten düşük olan karmaşık özelliklerdir. Geri bildirimleri her zaman memnuniyetle karşılarız ancak EF Core EF6'da mümkün olmayan birçok şeyi mümkün hale EF Core EF6'nın tüm özelliklerini desteklemesi mümkün değildir.

2 EF Core taraf tarafından uygulanan veritabanı sağlayıcılarının yeni ana sürümlerine güncelleştirilerek gecikmeli EF Core. 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 (.NET Core'da değil) çalışır.

Desteklenen platformlar

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

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

Yeni uygulamalar için kılavuz

Uygulamanın EF Core üzerinde desteklenen bir şeye ihtiyacı yoksa tüm yeni uygulamalar için .NET Core'da.NET Framework.

Mevcut EF6 uygulamaları için kılavuz

EF Core, EF6'nın yerini alan bir açılan liste değildir. EF6'dan EF Core büyük olasılıkla uygulamanıza değişiklik gerektirir.

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

  • Veri erişim kodu kararlı ise ve gelişme olasılığı yoksa veya yeni özelliklere ihtiyaç yoksa EF6 kullanmaya devam etmek.
  • Veri EF Core gelişiyorsa veya uygulamanın yalnızca veri erişim kodunda mevcut olan yeni özelliklere ihtiyacı varsa EF Core.
  • Bir EF Core genellikle performans için de yapılır. Ancak, tüm senaryolar daha hızlı değildir, önce bazı profil oluşturmalar da yapar.

Daha fazla bilgi için bkz. EF6'dan EF Core bağlantı noktası.