Udostępnij przez


Dostawca bazy danych EF Core programu Microsoft SQL Server

Ten dostawca bazy danych umożliwia korzystanie z programu Entity Framework Core z programem Microsoft SQL Server (w tym usługami Azure SQL i Azure Synapse Analytics). Dostawca jest utrzymywany w ramach Entity Framework Core Project.

Install

Zainstaluj pakiet NuGet Microsoft.EntityFrameworkCore.SqlServer.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Użycie i konfiguracja

Gdy projekt odwołuje się do pakietu NuGet, skonfiguruj program EF dla programu SQL Server w następujący sposób:

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

W przypadku korzystania z programu EF z iniekcją zależności (np. ASP.NET) użyj następujących czynności:

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

Compatibility level

Opcjonalnie możesz skonfigurować program EF z poziomem zgodności bazy danych; Wyższe poziomy zgodności umożliwiają korzystanie z nowszych funkcji i odpowiednio skonfigurowanie programu EF powoduje korzystanie z tych funkcji. Jeśli nie skonfigurujesz jawnie poziomu zgodności, zostanie wybrana rozsądna wartość domyślna, która może nie korzystać z najnowszych funkcji. W związku z tym zaleca się jawne skonfigurowanie poziomu zgodności, który chcesz mieć.

Należy pamiętać, że dotyczy to tylko własnej konfiguracji poziomu zgodności platformy EF — mającego wpływ na generowany przez nią kod SQL — ale nie ma wpływu na poziom zgodności skonfigurowany w rzeczywistej bazie danych. Bazy danych hostowane w nowszych wersjach programu SQL Server mogą być nadal konfigurowane z niższymi poziomami zgodności, co powoduje, że nie obsługują najnowszych funkcji — dlatego może być konieczne zmianę poziomu zgodności w bazie danych. Aby uzyskać więcej informacji na temat poziomów zgodności, zobacz dokumentację.

Aby skonfigurować program EF z poziomem zgodności, użyj następującego polecenia UseCompatibilityLevel() :

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

Connection resiliency

Program EF obejmuje funkcje automatycznego ponawiania próby niepomyślnych poleceń bazy danych; Aby uzyskać więcej informacji, zobacz dokumentację. W przypadku używania UseAzureSql elementów i UseAzureSynapseodporność połączenia jest automatycznie konfigurowana przy użyciu odpowiednich ustawień specyficznych dla tych baz danych. W przeciwnym razie w przypadku korzystania z programu skonfiguruj dostawcę EnableRetryOnFailure za pomocą UseSqlServerpolecenia , jak pokazano w dokumentacji odporności połączenia.

W niektórych przypadkach może być wywoływana w kodzie, UseSqlServer którego nie można kontrolować. Począwszy od ef 9, aby włączyć odporność połączenia w takich scenariuszach, wywołaj ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) wcześniej (nie jest to konieczne z UseAzureSql i UseAzureSynapse).

Uwagi i zastrzeżenia

  • Pakiet Microsoft.Data.SqlClient jest dostarczany częściej niż dostawca EF Core. Jeśli chcesz skorzystać z nowych funkcji i poprawek błędów, możesz dodać bezpośrednie odwołanie do pakietu do najnowszej wersji programu Microsoft.Data.SqlClient.
  • Dostawca programu EF SQL Server używa elementu Microsoft.Data.SqlClient, a nie starszego klienta System.Data.Client; Jeśli projekt ma bezpośrednią zależność od programu SqlClient, upewnij się, że odwołuje się do pakietu Microsoft.Data.SqlClient. Aby uzyskać więcej informacji na temat różnic między Microsoft.Data.SqlClient i System.Data.SqlClient, zobacz ten wpis w blogu.

Obsługiwane aparaty baz danych

  • Microsoft SQL Server (nowsza wersja 2019)
  • Azure SQL Database
  • Azure Synapse Analytics