Megosztás:


Microsoft SQL Server EF Core adatbázis-szolgáltató

Ez az adatbázis-szolgáltató lehetővé teszi az Entity Framework Core használatát a Microsoft SQL Serverrel (beleértve az Azure SQL-t és az Azure Synapse Analyticset). A szolgáltatót a Entity Framework Core Projectrészeként tartják fenn.

Install

Telepítse a Microsoft.EntityFrameworkCore.SqlServer NuGet-csomag.

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Használat és konfiguráció

Miután a projekt hivatkozik a nuget-csomagra, konfigurálja az EF-t az SQL Serverhez az alábbiak szerint:

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

Ha az EF-t függőséginjektálással (pl. ASP.NET) használja, használja a következőket:

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

Az EF SQL Server-szolgáltató a Microsoft.Data.SqlClientet használja mögöttes ADO.NET szolgáltatóként. Az SqlClient által elfogadott kapcsolati sztringekről ezen a lapon talál további információt.

Kompatibilitási szint

Igény szerint konfigurálhatja az EF-t az adatbázis kompatibilitási szintjével; a magasabb kompatibilitási szintek lehetővé teszik az újabb funkciókat, és az EF ennek megfelelően konfigurálásával ezeket a funkciókat fogja használni. Ha nem konfigurálja explicit módon a kompatibilitási szintet, a rendszer egy ésszerű alapértelmezett beállítást választ, amely nem feltétlenül használja ki a legújabb funkciókat. Ennek eredményeképpen javasoljuk, hogy explicit módon konfigurálja a kívánt kompatibilitási szintet.

Vegye figyelembe, hogy ez csak a kompatibilitási szint ef saját konfigurációjára vonatkozik – például az általa létrehozott SQL-t érinti –, de nem befolyásolja a tényleges adatbázisban konfigurált kompatibilitási szintet. Előfordulhat, hogy az SQL Server újabb verzióiban üzemeltetett adatbázisok továbbra is alacsonyabb kompatibilitási szinttel vannak konfigurálva, ami miatt nem támogatják a legújabb funkciókat , ezért előfordulhat, hogy az adatbázisban is módosítania kell a kompatibilitási szintet. A kompatibilitási szintekről további információt a dokumentációban talál.

Az EF kompatibilitási szinttel való konfigurálásához használja UseCompatibilityLevel() az alábbiakat:

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

Kapcsolat rugalmassága

Az EF a sikertelen adatbázis-parancsok automatikus újrapróbálkozási funkcióját tartalmazza; további információkért tekintse meg a dokumentációt. Amikor UseAzureSql és UseAzureSynapse használatban van, a hozzáférés rugalmassága automatikusan beállításra kerül az adott adatbázisoknak megfelelő beállításokkal. Különben, amikor használja UseSqlServer, konfigurálja a szolgáltatót EnableRetryOnFailure úgy, ahogy a hálózati kapcsolat rugalmassági dokumentációja leírja.

Bizonyos esetekben UseSqlServer olyan kódban kerülhet meghívásra, amit nem áll módunkban szabályozni. Az EF 9-től kezdődően az ilyen helyzetekben a kapcsolat rugalmasságának engedélyezéséhez hívja ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) meg előre (ez nem szükséges a következővel UseAzureSql : és UseAzureSynapse).

Jegyzetek és figyelmeztetések

  • A Microsoft.Data.SqlClient csomag gyakrabban szállít, mint az EF Core-szolgáltató. Ha ki szeretné használni az új funkciókat és hibajavításokat, hozzáadhat egy közvetlen csomaghivatkozást a Microsoft.Data.SqlClient legújabb verziójához.
  • Az EF SQL Server-szolgáltató a Microsoft.Data.SqlClientet használja, és nem a régebbi System.Data.Clientt; Ha a projekt közvetlen függőséget alkalmaz az SqlClienthez, győződjön meg arról, hogy a Microsoft.Data.SqlClient csomagra hivatkozik. A Microsoft.Data.SqlClient és a System.Data.SqlClient közötti különbségekről ebben a blogbejegyzésben talál további információt.

Támogatott adatbázismotorok

  • Microsoft SQL Server (2019-től)
  • Azure SQL Database
  • Azure Synapse Analytics