Bagikan melalui


Penyedia Basis Data EF Core Microsoft SQL Server

Penyedia database ini memungkinkan Entity Framework Core digunakan dengan Microsoft SQL Server (termasuk Azure SQL dan Azure Synapse Analytics). Penyedia dipertahankan sebagai bagian dari Proyek Kerangka Kerja Inti Entitas.

Install

Instal paket NuGet Microsoft.EntityFrameworkCore.SqlServer .

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Penggunaan dan konfigurasi

Setelah proyek Anda mereferensikan paket nuget, konfigurasikan EF untuk SQL Server sebagai berikut:

public class MyContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("<CONNECTION STRING>");
    }
}

Saat menggunakan EF dengan injeksi dependensi (misalnya ASP.NET), gunakan hal berikut:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));

Penyedia EF SQL Server menggunakan Microsoft.Data.SqlClient sebagai penyedia ADO.NET yang mendasarnya. Untuk informasi selengkapnya tentang string koneksi yang diterima oleh SqlClient, lihat halaman ini.

Tingkat kompatibilitas

Anda dapat secara opsional mengonfigurasi EF dengan tingkat kompatibilitas database Anda; tingkat kompatibilitas yang lebih tinggi memungkinkan fitur yang lebih baru, dan mengonfigurasi EF yang sesuai membuatnya menggunakan fitur-fitur tersebut. Jika Anda tidak secara eksplisit mengonfigurasi tingkat kompatibilitas, default yang wajar akan dipilih yang mungkin tidak memanfaatkan fitur terbaru. Akibatnya, disarankan untuk secara eksplisit mengonfigurasi tingkat kompatibilitas yang ingin Anda miliki.

Perhatikan bahwa ini hanya mencakup konfigurasi EF sendiri dari tingkat kompatibilitas - mempengaruhi misalnya SQL yang dihasilkannya - tetapi tidak memengaruhi tingkat kompatibilitas yang dikonfigurasi dalam database Anda yang sebenarnya. Database yang dihosting pada versi SQL Server yang lebih baru mungkin masih dikonfigurasi dengan tingkat kompatibilitas yang lebih rendah, menyebabkannya tidak mendukung fitur terbaru - jadi Anda mungkin juga perlu mengubah tingkat kompatibilitas dalam database Anda. Untuk informasi selengkapnya tentang tingkat kompatibilitas, lihat dokumentasi.

Untuk mengonfigurasi EF dengan tingkat kompatibilitas, gunakan UseCompatibilityLevel() sebagai berikut:

optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel(170));

Ketahanan koneksi

EF menyertakan fungsionalitas untuk mencoba kembali perintah database yang gagal secara otomatis; untuk informasi selengkapnya, lihat dokumentasi. Saat menggunakan UseAzureSql dan UseAzureSynapse, ketahanan koneksi secara otomatis disiapkan dengan pengaturan yang sesuai khusus untuk database tersebut. Jika tidak, saat menggunakan UseSqlServer, konfigurasikan penyedia dengan EnableRetryOnFailure seperti yang ditunjukkan dalam dokumentasi ketahanan koneksi.

Dalam beberapa kasus, UseSqlServer mungkin dipanggil dalam kode yang tidak dapat Anda kontrol. Dimulai dengan EF 9, untuk mengaktifkan ketahanan koneksi dalam skenario tersebut, hubungi ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) sebelumnya (ini tidak diperlukan dengan UseAzureSql dan UseAzureSynapse).

Catatan dan peringatan

  • Paket Microsoft.Data.SqlClient dikirim lebih sering daripada penyedia EF Core. Jika Anda ingin memanfaatkan fitur baru dan perbaikan bug, Anda dapat menambahkan referensi paket langsung ke versi terbaru Microsoft.Data.SqlClient.
  • Penyedia EF SQL Server menggunakan Microsoft.Data.SqlClient, dan bukan System.Data.Client yang lebih lama; jika proyek Anda mengambil dependensi langsung pada SqlClient, pastikan proyek mereferensikan paket Microsoft.Data.SqlClient. Untuk informasi selengkapnya tentang perbedaan antara Microsoft.Data.SqlClient dan System.Data.SqlClient, lihat posting blog ini.

Mesin database yang didukung

  • Microsoft SQL Server (2019 dan seterusnya)
  • Azure SQL Database
  • Azure Synapse Analytics