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.