Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met deze databaseprovider kan Entity Framework Core worden gebruikt met Microsoft SQL Server (inclusief Azure SQL en Azure Synapse Analytics). De provider wordt onderhouden als onderdeel van het Entity Framework Core Project.
Install
Installeer het Microsoft.EntityFrameworkCore.SqlServer NuGet-pakket.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Gebruik en configuratie
Zodra uw project verwijst naar het nuget-pakket, configureert u EF voor SQL Server als volgt:
public class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("<CONNECTION STRING>");
}
}
Wanneer u EF gebruikt met afhankelijkheidsinjectie (bijvoorbeeld ASP.NET), gebruikt u het volgende:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));
De EF SQL Server-provider gebruikt Microsoft.Data.SqlClient als onderliggende ADO.NET-provider. Zie deze pagina voor meer informatie over de verbindingsreeksen die door SqlClient worden geaccepteerd.
Compatibiliteitsniveau
U kunt EF desgewenst configureren met het compatibiliteitsniveau van uw database; hogere compatibiliteitsniveaus bieden nieuwere functies en het configureren van EF maakt het gebruik van deze functies. Als u niet expliciet een compatibiliteitsniveau configureert, wordt een redelijke standaardwaarde gekozen die mogelijk niet profiteert van de nieuwste functies. Als gevolg hiervan is het raadzaam om expliciet het compatibiliteitsniveau te configureren dat u wilt hebben.
Houd er rekening mee dat dit alleen betrekking heeft op de eigen configuratie van het compatibiliteitsniveau van EF, wat bijvoorbeeld van invloed is op de SQL die wordt gegenereerd, maar niet van invloed is op het compatibiliteitsniveau dat is geconfigureerd in uw werkelijke database. Databases die worden gehost op nieuwere versies van SQL Server, kunnen nog steeds worden geconfigureerd met lagere compatibiliteitsniveaus, waardoor ze de nieuwste functies niet ondersteunen. Mogelijk moet u ook het compatibiliteitsniveau in uw database wijzigen. Zie de documentatie voor meer informatie over compatibiliteitsniveaus.
Als u EF wilt configureren met een compatibiliteitsniveau, gebruikt u UseCompatibilityLevel() als volgt:
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());
Verbindingstolerantie
EF bevat functionaliteit voor het automatisch opnieuw proberen van mislukte databaseopdrachten; Zie de documentatie voor meer informatie. Bij het gebruik UseAzureSql en UseAzureSynapsewordt de verbindingstolerantie automatisch ingesteld met de juiste instellingen die specifiek zijn voor die databases. In andere gevallen, wanneer u UseSqlServer gebruikt, configureert u de provider met EnableRetryOnFailure zoals aangegeven in de documentatie over de verbindingstolerantie.
In sommige gevallen kan UseSqlServer worden aangeroepen in code die u niet kunt beheren. Te beginnen met EF 9, om verbindingstolerantie in dergelijke scenario's mogelijk te maken, roept u vooraf aan ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) (dit is niet nodig met UseAzureSql en UseAzureSynapse).
Notities en opmerkingen
- Het Microsoft.Data.SqlClient-pakket wordt vaker geleverd dan de EF Core-provider. Als u wilt profiteren van nieuwe functies en oplossingen voor fouten, kunt u een directe pakketverwijzing toevoegen aan de nieuwste versie van Microsoft.Data.SqlClient.
- De EF SQL Server-provider maakt gebruik van Microsoft.Data.SqlClient en niet van de oudere System.Data.Client; als uw project rechtstreeks afhankelijk is van SqlClient, controleert u of het verwijst naar het pakket Microsoft.Data.SqlClient. Zie dit blogbericht voor meer informatie over de verschillen tussen Microsoft.Data.SqlClient en System.Data.SqlClient.
Ondersteunde database-engines
- Microsoft SQL Server (2019 en hoger)
- Azure SQL Database
- Azure Synapse Analytics