&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ı.