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")));
Il provider EF SQL Server usa Microsoft.Data.SqlClient come provider di ADO.NET sottostante. Per altre informazioni sulle stringhe di connessione accettate da SqlClient, vedere questa pagina.
Livello di compatibilità
Facoltativamente, è possibile configurare EF con il livello di compatibilità del database; livelli di compatibilità più elevati consentono l'utilizzo di funzionalità più recenti e configurare EF di conseguenza permette di sfruttare tali funzionalità. 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 questo riguarda solo la configurazione del livello di compatibilità di Entity Framework, che influenza, ad esempio, il SQL generato, ma non influisce sul livello di compatibilità configurato nel vostro 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(170));
Resilienza della connessione
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