Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo provider di database consente l'uso di Entity Framework Core con Microsoft SQL Server (incluso Azure SQL e Azure Synapse Analytics). Il provider viene gestito come parte del Entity Framework Core Project.
Install
Installare il pacchetto NuGet Microsoft.EntityFrameworkCore.SqlServer.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Utilizzo e configurazione
Dopo che il progetto fa riferimento al pacchetto nuget, configurare EF per SQL Server come indicato di seguito:
public class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("<CONNECTION STRING>");
}
}
Quando si usa Entity Framework con inserimento delle dipendenze (ad esempio, ASP.NET), usare quanto segue:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));
Compatibility level
Facoltativamente, è possibile configurare Entity Framework con il livello di compatibilità del database; i livelli di compatibilità più elevati consentono funzionalità più recenti e la configurazione di Ef di conseguenza lo usano. Se non si configura in modo esplicito un livello di compatibilità, verrà scelto un valore predefinito ragionevole che potrebbe non sfruttare le funzionalità più recenti. Di conseguenza, è consigliabile configurare in modo esplicito il livello di compatibilità che si vuole avere.
Si noti che si tratta solo della propria configurazione di Entity Framework del livello di compatibilità, ad esempio sql generato, ma non influisce sul livello di compatibilità configurato nel database effettivo. I database ospitati in versioni più recenti di SQL Server possono comunque essere configurati con livelli di compatibilità inferiori, causando il mancato supporto delle funzionalità più recenti, pertanto potrebbe essere necessario modificare anche il livello di compatibilità nel database. Per altre informazioni sui livelli di compatibilità, vedere la documentazione.
Per configurare Entity Framework con un livello di compatibilità, usare UseCompatibilityLevel() come segue:
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());
Connection resiliency
EF include funzionalità per la ripetizione automatica dei comandi di database non riusciti; Per altre informazioni, vedere la documentazione. Quando si usa UseAzureSql e UseAzureSynapse, la resilienza della connessione viene configurata automaticamente con le impostazioni appropriate specifiche per tali database. In caso contrario, quando si usa UseSqlServer, configurare il provider con EnableRetryOnFailure come illustrato nella documentazione sulla resilienza della connessione.
In alcuni casi, UseSqlServer può essere chiamato nel codice che non è possibile controllare. A partire da EF 9, per abilitare la resilienza della connessione in questi scenari, chiamare ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) in anticipo (questo non è necessario con UseAzureSql e UseAzureSynapse).
Note e avvertenze
- Il pacchetto Microsoft.Data.SqlClient viene fornito più frequentemente del provider EF Core. Se si desidera sfruttare le nuove funzionalità e le correzioni di bug, è possibile aggiungere un riferimento diretto al pacchetto alla versione più recente di Microsoft.Data.SqlClient.
- Il provider EF SQL Server usa Microsoft.Data.SqlClient e non il precedente System.Data.Client; se il progetto accetta una dipendenza diretta da SqlClient, assicurarsi che faccia riferimento al pacchetto Microsoft.Data.SqlClient. Per altre informazioni sulle differenze tra Microsoft.Data.SqlClient e System.Data.SqlClient, vedere questo post di blog.
Motori di database supportati
- Microsoft SQL Server (2019 e versioni successive)
- Database SQL di Microsoft Azure
- Azure Synapse Analytics