Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Seperti yang dijelaskan dalam proses perencanaan , kami telah mengumpulkan input dari pemangku kepentingan ke dalam rencana untuk Entity Framework Core 7.0 (EF Core 7.0). Untuk mempersingkat, EF Core 7.0 juga disebut sebagai EF7.
Penting
Rencana ini bukan komitmen; ini akan berkembang saat kita terus belajar sepanjang rilis. Beberapa hal yang saat ini tidak direncanakan untuk EF7 mungkin akan ditarik. Beberapa hal yang saat ini direncanakan untuk EF7 mungkin akan ditunda atau dihapus.
Informasi umum
EF Core 7.0 adalah rilis berikutnya setelah EF Core 6.0 dan saat ini dijadwalkan untuk rilis pada November 2022 pada saat yang sama dengan .NET 7. Tidak ada rencana untuk rilis EF Core 6.1.
Platform yang didukung
EF7 saat ini menargetkan .NET 6. Ini mungkin diperbarui ke .NET 7 saat kami mendekati rilis. EF7 tidak menargetkan versi .NET Standard apa pun; untuk informasi selengkapnya, lihat masa depan .NET Standard. EF7 tidak akan berjalan pada .NET Framework.
EF7 akan selaras dengan kebijakan dukungan .NET dan oleh karena itu tidak akan menjadi rilis dukungan jangka panjang (LTS).
Memutus perubahan
EF7 akan berisi sejumlah kecil perubahan melanggar karena kami terus mengembangkan EF Core dan platform .NET. Tujuan kami adalah untuk meminimalkan perubahan yang merusak sebanyak mungkin.
Tema
Investasi besar di EF7 terutama akan berada di bawah tema-tema berikut:
- Fitur yang sangat diminta
- Platform net dan ekosistem
- Jalur jelas ke depan dari EF6
- Kinerja
Masing-masing tema ini dijelaskan secara rinci di bawah ini. Status keseluruhan dari setiap tema dapat dilacak dalam pembaruan EF Core dua mingguan. Silakan komentari Masalah GitHub #26994 dengan umpan balik atau saran apa pun.
Tema: Fitur yang sangat diminta
Seperti biasa, input utama dalam proses perencanaan berasal dari suara (👍) terhadap fitur-fitur di GitHub. Berdasarkan suara ini selain faktor lain, kami berencana untuk mengerjakan fitur yang sangat diminta berikut untuk EF7.
Kolom JSON
Dilacak oleh Masalah #4021: Memetakan nilai JSON yang disimpan dalam database ke properti EF
Proposisi nilai: Simpan dan kueri ke dalam dokumen berbasis JSON yang disimpan dalam kolom database relasional.
Fitur ini akan memperkenalkan mekanisme dan pola umum untuk dukungan JSON yang dapat diimplementasikan oleh penyedia database apa pun. Kami akan bekerja sama dengan komunitas untuk menyelaraskan implementasi yang ada untuk Npgsql dan Pomelo MySQL, dan juga menambahkan dukungan untuk SQL Server dan SQLite.
Pembaruan massal
Operasi CUD massal (yaitu berbasis set) yang dilacak oleh masalah #795, dilakukan tanpa memuat data ke dalam memori.
Proposisi nilai: Pembaruan berbasis predikat yang efisien untuk banyak baris database tanpa memuat data ke dalam memori.
pelacakan perubahan diikuti oleh SaveChanges adalah mekanisme utama di EF Core untuk menyisipkan, memperbarui, dan menghapus entitas. Mekanisme ini memastikan bahwa operasi database diperintahkan untuk memenuhi batasan, dan entitas yang dilacak tetap sinkron dengan perubahan yang dilakukan pada database. Namun, diperlukan proses interaksi dengan database untuk memuat entitas ke memori guna membuat perintah database yang sesuai, diikuti oleh proses interaksi dengan database untuk menjalankan perintah ini.
Sebaliknya, pembaruan secara massal atau berbasis set melibatkan penentuan perubahan yang harus dilakukan pada database dan kemudian menjalankan perubahan tersebut tanpa harus memuat entitas terlebih dahulu ke dalam memori. Ini bisa jauh lebih cepat daripada pembaruan terlacak, terutama ketika modifikasi yang sama harus diterapkan ke banyak entitas/baris yang berbeda.
Untuk EF7, kami berencana untuk menerapkan pembaruan dan penghapusan besar-besaran (tetapi tidak penyisipan data). Perhatikan bahwa pembaruan massal tidak sama dengan pembaruan batching. EF Core sudah menggabungkan perubahan pada banyak entitas yang dilacak ke dalam batch saat mengirim pembaruan ke database melalui SaveChanges
.
Kait dalam siklus kehidupan
Dilacak oleh Masalah #626: Kait siklus hidup
Proposisi nilai: Memungkinkan aplikasi untuk bereaksi ketika hal-hal menarik terjadi dalam kode EF.
Kait siklus hidup memungkinkan pemberitahuan aplikasi atau pustaka setiap kali kondisi atau tindakan menarik tertentu terjadi untuk entitas, properti, hubungan, kueri, instans konteks, dan konstruksi EF lainnya. Kami telah menerapkan banyak kait siklus hidup atas versi EF Core sebelumnya, termasuk berbagai penyadap dan peristiwa . Untuk EF7, kami berencana untuk menambahkan hook penting yang saat ini tidak ada. Misalnya, pengait untuk pengolahan instans entitas setelah mereka dibuat, yang umumnya dikenal sebagai ObjectMaterialized.
Pemetaan tabel per jenis beton (TPC)
Dilacak oleh masalah #3170: pola pemetaan warisan TPC
Proposisi nilai: Memetakan entitas dalam hierarki ke tabel terpisah tanpa mengalami penurunan performa dari pemetaan TPT.
EF Core mendukung tabel per hierarki (TPH) dan pemetaan tabel per jenis (TPT) untuk hierarki pewarisan .NET. Pemetaan tabel per jenis beton (TPC) mirip dengan pemetaan TPT di mana setiap jenis entitas dalam hierarki dipetakan ke tabel database yang berbeda. Namun, sementara TPT memetakan properti dari tipe dasar ke kolom dalam tabel untuk tipe dasar, TPC memetakan properti tipe dasar ke tabel yang sama dengan tipe konkret aktual yang dipetakan. Ini dapat mengakibatkan performa yang jauh lebih cepat karena beberapa tabel tidak perlu digabungkan saat mengkueri untuk jenis tertentu. Ini datang dengan mengorbankan denormalisasi data, karena kolom diduplikasi pada tabel-tabel yang dipetakan ke setiap tipe konkret dalam hierarki.
Pekerjaan untuk pemetaan TPC juga mencakup pemisahan entitas secara lebih umum, dan dukungan untuk menentukan berbagai faset per tabel dalam TPT, TPC, atau pemisahan entitas.
Memetakan operasi CUD ke prosedur tersimpan
Dilacak oleh masalah #245: Memetakan sisipan, pembaruan, dan penghapusan (operasi CUD) ke prosedur tersimpan
Proposisi nilai: Gunakan prosedur tersimpan untuk mengelola modifikasi data.
EF Core sudah mendukung kueri data menggunakan prosedur tersimpan. Fitur ini akan memungkinkan pemetaan sisipan, pembaruan, dan penghapusan yang dihasilkan oleh SaveChanges
ke prosedur tersimpan dalam database.
Objek nilai
Dilacak oleh masalah #9906: Gunakan struktur atau kelas C# sebagai objek nilai
Proposisi nilai: Aplikasi dapat menggunakan objek nilai gaya DDD dalam model EF.
Pandangan tim sebelumnya adalah bahwa entitas yang dimiliki, yang ditujukan untuk dukungan agregat, juga akan menjadi perkiraan yang wajar untuk objek nilai. Pengalaman telah menunjukkan hal ini tidak terjadi. Oleh karena itu, di EF7, kami berencana untuk memperkenalkan pengalaman yang lebih baik yang berfokus pada kebutuhan objek nilai dalam desain berbasis domain. Pendekatan ini akan didasarkan pada pengonversi nilai daripada entitas yang dimiliki.
Pekerjaan ini awalnya dirancang untuk memungkinkan pengonversi nilai yang memetakan ke beberapa kolom. Kami dapat menarik dukungan tambahan berdasarkan umpan balik selama rilis.
Mendukung pembuatan nilai saat menggunakan pengonversi nilai
Dilacak oleh Isu #11597: Mendukung lebih banyak jenis pembangkitan nilai dengan konverter
Proposisi nilai: Jenis kunci yang dienkapsulasi gaya DDD dapat sepenuhnya memanfaatkan kunci nilai yang dihasilkan secara otomatis.
EF Core 6.0 memungkinkan lebih banyak jenis pembuatan nilai untuk digunakan dengan kunci yang dipetakan melalui pengonversi nilai . Kami berencana untuk menggeneralisasi dan memperluas dukungan ini di EF7.
Kueri SQL mentah untuk jenis yang tidak dipetakan
Dilacak oleh masalah #10753: Mendukung kueri SQL mentah tanpa menentukan jenis entitas untuk hasil
Proposisi nilai: Aplikasi dapat menjalankan lebih banyak jenis kueri SQL mentah tanpa turun ke ADO.NET atau menggunakan pustaka pihak ketiga.
Saat ini kueri SQL mentah harus mengembalikan jenis dalam model, baik dengan atau tanpa kunci yang ditentukan. Di EF7, kami berencana untuk mengizinkan kueri SQL mentah yang secara langsung mengembalikan jenis yang tidak terkandung dalam model EF.
Pekerjaan di sini juga akan mencakup kueri SQL mentah yang mengembalikan jenis sederhana/skalar, seperti Guid
, DateTime
, int
, dan string
.
Templat pembangunan database
Dilacak oleh Masalah #4038: Templat kode untuk jenis entitas perancah dan DbContext dari database yang ada
Proposisi nilai: Kode yang dihasilkan oleh dotnet ef database scaffold
dapat sepenuhnya disesuaikan.
Kami sering menerima permintaan untuk menyesuaikan kode yang dihasilkan saat pembuatan kerangka (rekayasa terbalik) dari database yang ada. Kami berencana untuk mengatasi permintaan ini di EF7 dengan mendukung templat T4 untuk jenis entitas yang dihasilkan dan DbContext
. Pengembang akan dapat menyesuaikan templat standar, atau membuat templat baru dari awal.
Tema: Platform dan ekosistem .NET
Sebagian besar pekerjaan yang direncanakan untuk EF7 melibatkan peningkatan pengalaman akses data untuk .NET di berbagai platform dan domain. Ini melibatkan pekerjaan di EF Core jika diperlukan, tetapi juga bekerja di bidang lain untuk memastikan pengalaman hebat di seluruh teknologi .NET. Kami akan fokus pada platform/teknologi berikut untuk rilis EF7:
- .NET MAUI
- ASP.NET Core
- Azure Synapse
- Blazor Server
- Blazor WebAssembly
- Formulir Windows
- Windows Presentation Foundation (WPF)
Daftar ini didasarkan pada banyak faktor, termasuk data pelanggan, arah strategis, dan sumber daya yang tersedia. Area umum yang akan kami kerjakan untuk platform ini diuraikan di bawah ini.
Transaksi terdistribusi
Dilacak melalui Masalah #715 di dotnet/runtime: Melaksanakan transaksi yang terdistribusi dan dipromosikan dalam System.Transactions
Proposisi nilai: Aplikasi .NET Framework menggunakan transaksi terdistribusi dapat di-port ke .NET 7.
Pustaka System.Transactions
di .NET Framework berisi kode asli yang menggunakan Koordinator Transaksi Terdistribusi (DTC) Windows untuk mendukung transaksi terdistribusi. Kode ini tidak pernah di-port ke .NET Core. Dalam jangka waktu .NET 7, kami berencana untuk menyelidiki dan memulai proses membawa fungsionalitas ini ke .NET modern. Ini akan awalnya hanya untuk Windows, dan hanya akan mendukung skenario database di mana penyedia ADO.NET juga mendukung transaksi terdistribusi. Penggunaan transaksi terdistribusi lainnya, seperti di WCF, tidak akan didukung di .NET 7. Berdasarkan umpan balik dan biaya, kami dapat menerapkan dukungan untuk skenario lain dan/atau platform non-Windows dalam rilis mendatang.
Perangkat EF Core
Dilacak oleh Isu #26798: Memodernisasi alat EF Core
Proposisi nilai: perintah dotnet ef
mudah digunakan dan bekerja dengan platform dan teknologi modern.
Platform .NET telah berevolusi sejak pertama kali kami memperkenalkan alat untuk migrasi, perancah database, dll. di EF Core 1.0. Di EF7, kami berencana untuk memperbarui arsitektur alat untuk mendukung platform baru dengan lebih baik, seperti .NET MAUI, dan untuk menyederhanakan proses di area seperti penggunaan beberapa proyek. Ini termasuk memberikan umpan balik yang lebih baik ketika terjadi kesalahan, integrasi yang lebih baik dengan pencatatan, peningkatan performa, dan fitur baru sugar.
EF Core dan antarmuka pengguna grafis
Dilacak oleh Isu #26799: Meningkatkan pengalaman untuk pengikatan data dan antarmuka grafis
Proposisi nilai: Mudah untuk membangun aplikasi grafis terikat data dengan EF Core.
EF Core dirancang untuk bekerja dengan baik dengan skenario pengikatan data, seperti yang ada di Windows Forms dan .NET MAUI. Namun, menghubungkan titik-titik antara teknologi ini tidak selalu mudah. Untuk EF7, kami berencana untuk meningkatkan pengalaman dengan bekerja di EF Core dan di Visual Studio untuk mempermudah membangun aplikasi terikat data dengan EF Core.
SqlServer.Core (Woodstar)
Dilacak di repositori .NET Data Lab
Proposisi nilai: Akses cepat dan dikelola sepenuhnya ke SQL Server dan Azure SQL untuk aplikasi .NET modern.
Microsoft.Data.SqlClient adalah penyedia database ADO.NET berfungsi penuh untuk SQL Server. Ini mendukung berbagai fitur SQL Server pada .NET Core dan .NET Framework. Namun, ini juga merupakan basis kode besar dan lama dengan banyak interaksi kompleks antara perilakunya. Ini menyulitkan untuk menyelidiki potensi keuntungan yang dapat dilakukan menggunakan fitur .NET Core yang lebih baru.
Kami memulai proyek tahun lalu, yang dikenal sebagai "Woodstar", untuk menyelidiki potensi driver SQL Server dengan performa tinggi untuk .NET. Kami berencana untuk melakukan investasi lebih lanjut yang signifikan ke dalam proyek ini dalam jangka waktu EF7.
Penting
Investasi di Microsoft.Data.SqlClient tidak berubah. Ini akan terus menjadi cara yang direkomendasikan untuk terhubung ke SQL Server dan Azure SQL, baik dengan dan tanpa EF Core. Ini akan terus mendukung fitur SQL Server baru saat diperkenalkan.
Penyedia Azure Cosmos DB
Dilacak oleh masalah berlabel 'area-cosmos' dan dalam tonggak pencapaian 7,0
Nilai tawar: Terus jadikan EF Core sebagai cara paling mudah dan paling produktif untuk bekerja dengan Azure Cosmos DB.
Kami melakukan peningkatan signifikan pada penyedia database EF Core Azure Cosmos DB untuk rilis 6.0. Peningkatan ini menciptakan pengalaman kelas satu untuk bekerja dengan Azure Cosmos DB dari EF Core, yang tercermin oleh pertumbuhan adopsi yang signifikan. Kami berencana untuk melanjutkan momentum ini di EF7 dengan penyempurnaan penyedia Azure Cosmos DB lebih lanjut berikut:
- Masalah #16146: Mendukung operator agregat
- Masalah #17306: Izinkan untuk menggunakan serializer JSON kustom
- Masalah #17670: Terjemahkan properti yang tidak bertahan dalam kueri jika memungkinkan
- Masalah #19944: Dukungan untuk eksekusi pemicu
- Masalah #20350: Mendeteksi filter kunci partisi pada lebih banyak kueri
- Masalah #20910: Tambahkan terjemahan untuk string. Bandingkan untuk Azure Cosmos DB
- Masalah #23538: Meningkatkan pohon kueri tersebut dalam proses terjemahan
- Masalah #24571: Izinkan operator penghentian setelah Lewati dan Ambil
- Masalah #24513: Menambahkan dukungan untuk penomoran halaman (MaxItemCount)
- Masalah #25700: menerjemahkan Panjang/Jumlah pada koleksi
- Masalah #25701: menerjemahkan pengindeksan ke dalam koleksi
- Masalah #26478: Menerapkan pencegat untuk Azure Cosmos DB
- Masalah #26491: Dukung AAD RBAC dengan ClientSecretCredential
Pastikan untuk memilih (👍) untuk fitur penyedia Azure Cosmos DB yang Anda butuhkan sehingga kami dapat menilai tempat untuk berinvestasi untuk manfaat terbanyak.
Pengalaman migrasi
Dilacak oleh Masalah #22946: Peningkatan migrasi database
Proposisi nilai: Mudah untuk memulai migrasi dan kemudian menggunakannya secara efektif dalam alur CI/CD.
EF Core 6.0 memperkenalkan bundel migrasi , yang secara signifikan meningkatkan pengalaman untuk aplikasi cloud-native dan penerapan database dalam sistem integrasi dan penyebaran berkelanjutan. Di EF7, kami berencana untuk melakukan peningkatan tambahan di area ini berdasarkan umpan balik pelanggan. Misalnya, kami berencana untuk mendukung menjalankan semua migrasi dalam satu transaksi untuk memfasilitasi pemulihan yang lebih mudah jika terjadi kesalahan.
Selain itu, kami berencana untuk meningkatkan pengalaman bagi pengembang yang memulai migrasi. Ini termasuk dapat membuat database secara otomatis saat mempelajari atau memulai proyek, lalu dengan mudah beralih ke migrasi terkelola saat proyek matang. Secara bergantian, untuk proyek dengan database yang ada, kami berencana untuk memudahkan pembuatan model EF awal dan kemudian beralih untuk mengelola database menggunakan migrasi ke depannya.
.NET Modern
Ketika .NET terus berkembang, kami ingin memastikan bahwa mengakses data terus menjadi pengalaman hebat. Untuk memfasilitasi hal ini, kami berencana untuk membuat kemajuan pada tiga area selama jangka waktu EF7.
Pemangkasan
Dilacak oleh Isu #21894: Meningkatkan dukungan pemangkasan untuk aplikasi EF Core demi mengurangi ukuran aplikasi
Proposisi nilai: Aplikasi yang lebih kecil yang dapat dikompilasi AOT secara efisien.
EF Core melakukan pembuatan kode runtime dalam jumlah besar. Ini menantang untuk model aplikasi yang bergantung pada goyangan pohon linker, seperti .NET MAUI dan Blazor, dan platform yang tidak memungkinkan kompilasi dinamis, seperti iOS. Di EF7, kami berencana untuk secara signifikan meningkatkan pemangkasan kode yang tidak terpakai. Ini akan memfasilitasi ukuran rakitan yang lebih kecil saat menggunakan EF Core, sehingga membantu penyebaran dan membuat kompilasi ahead-of-time (AOT) lebih efisien.
Mengembangkan System.Linq.Expression
Proposisi nilai: Gunakan fitur bahasa C# modern dalam kueri LINQ.
Kami bekerja sama dengan tim Roslyn dalam rencana untuk memungkinkan lebih banyak fitur C# digunakan dalam ekspresi LINQ. Ini adalah pekerjaan berkelanjutan yang sebagian besar akan dilacak di luar repositori EF Core.
Terjemahkan operator LINQ baru
Dilacak oleh masalah #25570: Mendukung fitur .NET LINQ baru
Proposisi nilai: Gunakan operator LINQ baru saat menerjemahkan kueri LINQ ke SQL.
Operator LINQ baru-baru ini ditambahkan ke BCL, dan kami berharap ada penambahan lebih banyak di masa mendatang. Masalah #25570 melacak penambahan dukungan untuk ini ke penyedia EF7 LINQ. Masalah ini akan diperbarui ketika operator baru LINQ ditambahkan. Seperti semua operator LINQ yang ada, kami hanya akan menambahkan dukungan ketika operator memiliki terjemahan yang wajar dan berguna ke database.
Buka telemetri untuk penyedia ADO.NET
Dipelacak oleh , Masalah #22336: Standarisasi pada DiagnosticSource/OpenTelemetry untuk pelacakan database
Proposisi nilai: Telemetri lintas platform, standar industri yang dapat dipantau dalam alat pilihan Anda.
Open telemetry adalah inisiatif Cloud Native Foundation untuk menumbuhkan mekanisme telemetri umum untuk perangkat lunak cloud-native. Sehubungan dengan database, ini termasuk membuat standar telemetri klien database. Kami berencana untuk melakukan pekerjaan dalam jangka waktu EF7 untuk membantu menghadirkan telemetri terbuka ke penyedia ADO.NET di ekosistem .NET. Ini termasuk bekerja dengan komunitas pada MySQL sumber terbuka dan penyedia Npgsql, serta Microsoft.Data.Sqlite. Kami juga akan menghubungi penyedia lain, dan kami mendorong pengurus penyedia ADO.NET untuk menghubungi jika tertarik.
Penyempurnaan ke System.Data
Dilacak oleh masalah di repositori dotnet\rruntime yang diberi label dengan area-System.Data
dalam milestone 7.0
Proposisi nilai: Akses data tingkat rendah yang lebih baik untuk menguntungkan semua kode tingkat yang lebih tinggi.
Seperti halnya setiap rilis, kami berniat untuk mengeksplorasi peningkatan pada API akses database tingkat rendah .NET, System.Data. Kami akan fokus pada peningkatan performa (misalnya, mengurangi alokasi memori dengan menghilangkan boxing saat menggunakan API), serta meningkatkan kegunaan.
Ruang lingkup peningkatan yang tepat akan ditentukan nanti berdasarkan kelayakan.
Meneliti akses data untuk cloud-native
Proposisi nilai: Evolusi masa depan akses data .NET yang mendukung pendekatan modern seperti layanan mikro dan cloud native.
Dalam jangka waktu EF7, kami berencana untuk meneliti pendekatan modern untuk akses data di seluruh platform .NET, terutama dalam mengacu pada layanan mikro dan aplikasi cloud-native. Penelitian ini akan membantu mendorong investasi masa depan dalam teknologi akses data untuk .NET.
Tema: Jalur jelas ke depan dari EF6
Dilacak oleh isu dokumentasi #1180: Berikan panduan yang lebih lengkap untuk porting dari EF6
Proposisi nilai: Pindahkan aplikasi Anda dengan mudah dari EF6 ke EF7.
EF Core selalu mendukung banyak skenario yang tidak dicakup oleh tumpukan EF6 lamaandan umumnya memiliki performa yang jauh lebih tinggi. Namun, EF6 juga telah mendukung skenario yang tidak dicakup oleh EF Core. EF7 akan menambahkan dukungan untuk banyak skenario ini, memungkinkan lebih banyak aplikasi untuk migrasi dari EF6 versi lama ke EF7. Pada saat yang sama, kami merencanakan panduan porting komprehensif untuk aplikasi yang berpindah dari EF6 warisan ke EF Core.
Sebagian besar pekerjaan dalam tema ini tumpang tindih dengan pekerjaan yang sudah diuraikan di atas. Beberapa item kerja yang lebih signifikan adalah:
- Masalah #214: Mengekspos konvensi pembuatan model ke aplikasi
- Masalah #245: Memetakan operasi sisipan, pembaruan, dan penghapusan (operasi CUD) pada prosedur tersimpan
- Masalah #620: Dukungan pemisahan entitas
- Masalah #3170: pola pemetaan warisan TPC
- Masalah #3864: Mendukung relasi banyak-ke-banyak satu arah melalui navigasi bayangan
- Masalah #4038: Templat kode untuk jenis entitas perancah dan DbContext dari database yang ada
- Masalah #10753: Mendukung kueri SQL mentah tanpa menentukan jenis entitas untuk hasil
- Masalah #11003: Dukungan KeyAttribute untuk kunci primer komposit
- Masalah #11624: Mendukung Kueri SQL mentah untuk jenis dasar seperti Guid, DateTime, dan int
- Masalah #15911: Implementasikan event ObjectMaterialized
- Masalah #17653: Dukungan untuk GroupBy entityType
- Masalah #19929: Dukung GroupBy ketika menjadi operator akhir
- Masalah #19930: Gabung Grup Dukungan ketika merupakan operator kueri terakhir
- isu #26626: Gunakan EF6 sebagai oracle (panduan referensi) untuk pengujian prosedural kueri EF Core
Selain itu, kami berencana untuk memperjelas di repositori GitHub EF6 versi lama bahwa kami tidak merencanakan pekerjaan di masa depan pada EF6. Pengecualian untuk ini adalah kami berencana menambahkan dukungan untuk menggunakan EF6 dengan Microsoft.Data.SqlClient. Ini akan terbatas pada dukungan runtime. Penggunaan perancang EF6 di Visual Studio masih memerlukan System.Data.SqlClient
.
Perhatikan bahwa EF Core memiliki arsitektur yang pada dasarnya berbeda dengan EF6. Secara khusus, ini tidak menggunakan spesifikasi Model Data Entitas (EDM). Ini berarti fitur tertentu seperti EDMX dan EntitySQL tidak akan pernah didukung di EF Core.
Tema: Performa
Kinerja yang optimal adalah prinsip mendasar dari EF Core, akses data tingkat bawah, dan seluruh .NET. Setiap rilis mencakup pekerjaan signifikan dalam meningkatkan performa. Seperti biasa, tema ini akan melibatkan banyak investigasi berulang, yang kemudian akan memberi tahu di mana kita memfokuskan sumber daya.
Performa penyisipan dan pembaruan database
Dilacak oleh Masalah 26797: Meningkatkan pelacakan perubahan dan memperbarui performa
Proposisi nilai: Sisipan dan pembaruan database berkinerja tinggi dari EF Core.
Selama beberapa rilis terakhir, kami telah berfokus pada peningkatan kinerja EF Core pada kueri non-pelacakan. Untuk EF7, kami berencana untuk fokus pada performa yang terkait dengan penyisipan dan pembaruan database. Ini termasuk performa kueri pelacakan perubahan, performa DetectChanges
, dan performa perintah sisipkan dan perbarui yang dikirim ke database.
Bagian dari pekerjaan ini mencakup implementasi pembaruan massal (berbasis set) , yang dilacak di atas sebagai fitur yang sangat diinginkan. Namun, kami juga berencana untuk meningkatkan performa pembaruan tradisional menggunakan SaveChanges
.
Skor komposit TechEmpower
Dilacak dengan Isu 26796: Meningkatkan performa dalam skor komposit TechEmpower
Proposisi nilai: Pembaruan data tingkat rendah berkinerja tinggi untuk semua aplikasi .NET.
Kami telah menjalankan standar industri tolok ukur TechEmpower di .NET terhadap database PostgreSQL selama beberapa tahun. Dalam beberapa rilis terakhir, kami telah secara signifikan meningkatkan tolok ukur Fortunes untuk akses data tingkat rendah dan EF Core.
Dalam jangka waktu EF7, kami berencana untuk secara khusus menargetkan peningkatan pada skor komposit TechEmpower. Ini mengukur performa atas berbagai skenario yang lebih luas.
Fitur lain-lain
Dilacak oleh masalah yang diberi label type-enhancement
pada tonggak pencapaian 7.0
Proposisi nilai: Peningkatan berkelanjutan pada EF Core untuk memenuhi persyaratan aplikasi yang ada dan berkembang.
Fitur lain-lain yang direncanakan untuk EF 7.0 meliputi, tetapi tidak terbatas pada:
- Masalah #14545: Desain: Memodernisasi C# yang dihasilkan
- Masalah #15762: Berikan cara mudah untuk mendapatkan skrip dari yang terbaru diterapkan pada database ke yang terbaru di basis kode
- Masalah #16406: Sepenuhnya merangkul migrasi khusus penyedia
- Masalah #18844: SQLite: Menerjemahkan elemen TimeSpan
- Masalah #18950: Mengaktifkan nullability dalam migrasi dan rekam jepret model
- Masalah #18990: Gunakan API batching baru dari ADO.NET
- Masalah #21615: pembaruan database dotnet-ef -1 (menurunkan migrasi terbaru)
- Masalah #21995: Hasilkan skrip untuk semua migrasi yang belum diterapkan ke database tertentu
- Masalah #22138: Tingkatkan ke SpatiaLite 5
- Masalah #23085: Jangan periksa string koneksi hingga setelah ConnectionOpening dipanggil
- Masalah #24685: Memungkinkan pengonversi nilai mengubah status nullabilitas kolom
- Masalah #25103: SQLite: Menerjemahkan lebih banyak anggota DateOnly dan TimeOnly
- Masalah #25872: Berikan info selengkapnya tentang bundel migrasi
- Masalah #26155: Kemudahan untuk menyederhanakan pembuatan skrip migrasi khusus untuk migrasi terakhir
- Masalah #26417: Tinjau kembali pelaporan pengecualian dan jejak tumpukan dalam pengelogan
- Masalah #26528: Daftarkan DbContext terlingkup secara otomatis saat menggunakan AddPooledDbContextFactory
Saran
Umpan balik Anda tentang perencanaan itu penting. Silakan berikan komentar pada Masalah GitHub #26994 dengan umpan balik atau saran umum tentang rencana tersebut. Cara terbaik untuk menunjukkan pentingnya masalah adalah dengan memilih (👍) untuk masalah tersebut di GitHub. Data ini kemudian akan masuk ke proses perencanaan untuk rilis berikutnya.