Freigeben über


Microsoft SQL Server-EF Core-Datenbankanbieter

Dieser Datenbankanbieter ermöglicht die Verwendung von Entity Framework Core mit Microsoft SQL Server (einschließlich Azure SQL und Azure Synapse Analytics). Dieser Anbieter wird im Rahmen des Entity Framework Core-Projekts verwaltet.

Install

Installieren Sie das Microsoft.EntityFrameworkCore.SqlServer NuGet-Paket.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Verwendung und Konfiguration

Nachdem Ihr Projekt auf das Nuget-Paket verweist, konfigurieren Sie EF für SQL Server wie folgt:

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

Verwenden Sie bei verwendung von EF mit Abhängigkeitsinjektion (z. B. ASP.NET) Folgendes:

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

Compatibility level

Sie können EF optional mit der Kompatibilitätsstufe Ihrer Datenbank konfigurieren. Höhere Kompatibilitätsstufen ermöglichen neuere Features und das Konfigurieren von EF verwendet diese Features entsprechend. Wenn Sie keine Kompatibilitätsstufe explizit konfigurieren, wird ein angemessener Standardwert ausgewählt, der möglicherweise nicht die neuesten Features nutzt. Daher wird empfohlen, die Kompatibilitätsstufe explizit zu konfigurieren, die Sie verwenden möchten.

Beachten Sie, dass dies nur die eigene Konfiguration der Kompatibilitätsebene von EF abdeckt , die z. B. die generierte SQL-Datei betrifft, aber nicht die in Ihrer tatsächlichen Datenbank konfigurierte Kompatibilitätsstufe. Datenbanken, die in neueren Versionen von SQL Server gehostet werden, sind möglicherweise immer noch mit niedrigeren Kompatibilitätsstufen konfiguriert, was dazu führt, dass sie die neuesten Features nicht unterstützen. Daher müssen Sie möglicherweise auch die Kompatibilitätsstufe in Ihrer Datenbank ändern. Weitere Informationen zu Kompatibilitätsstufen finden Sie in der Dokumentation.

Um EF mit einer Kompatibilitätsstufe zu konfigurieren, verwenden Sie UseCompatibilityLevel() folgendes:

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

Connection resiliency

EF enthält Funktionen zum automatischen Wiederholen fehlgeschlagener Datenbankbefehle; weitere Informationen finden Sie in der Dokumentation. Bei Verwendung UseAzureSql und UseAzureSynapse, Verbindungsresilienz wird automatisch mit den für diese Datenbanken spezifischen Einstellungen eingerichtet. Konfigurieren Sie andernfalls bei Verwendung UseSqlServerden Anbieter wie EnableRetryOnFailure in der Dokumentation zur Verbindungsresilienz dargestellt.

In einigen Fällen kann der Code aufgerufen werden, UseSqlServer den Sie nicht steuern können. Ab EF 9, um die Verbindungsresilienz in solchen Szenarien zu ermöglichen, rufen Sie ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) vorher auf (dies ist nicht erforderlich mit UseAzureSql und UseAzureSynapse).

Hinweise und Vorbehalte

  • Das Microsoft.Data.SqlClient-Paket wird häufiger als der EF Core-Anbieter ausgeliefert. Wenn Sie neue Features und Fehlerbehebungen nutzen möchten, können Sie einen direkten Paketverweis auf die neueste Version von Microsoft.Data.SqlClient hinzufügen.
  • Der EF SQL Server-Anbieter verwendet Microsoft.Data.SqlClient und nicht den älteren System.Data.Client; Wenn Ihr Projekt eine direkte Abhängigkeit von SqlClient verwendet, stellen Sie sicher, dass es auf das Microsoft.Data.SqlClient-Paket verweist. Weitere Informationen zu den Unterschieden zwischen Microsoft.Data.SqlClient und System.Data.SqlClient finden Sie in diesem Blogbeitrag.

Unterstützte Datenbank-Engines

  • Microsoft SQL Server (ab 2019)
  • Azure SQL-Datenbank
  • Azure Synapse Analytics