Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este proveedor de bases de datos permite usar Entity Framework Core con Microsoft SQL Server (incluido Azure SQL y Azure Synapse Analytics). Este proveedor se mantiene como parte del proyecto Entity Framework Core.
Install
Instale el paquete NuGet Microsoft.EntityFrameworkCore.SqlServer .
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Uso y configuración
Una vez que el proyecto haga referencia al paquete nuget, configure EF para SQL Server de la siguiente manera:
public class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("<CONNECTION STRING>");
}
}
Al usar EF con inserción de dependencias (por ejemplo, ASP.NET), use lo siguiente:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));
El proveedor de EF SQL Server usa Microsoft.Data.SqlClient como su proveedor de ADO.NET subyacente. Para obtener más información sobre las cadenas de conexión aceptadas por SqlClient, consulte esta página.
Nivel de compatibilidad
Opcionalmente, puede configurar EF con el nivel de compatibilidad de la base de datos; los niveles de compatibilidad más altos permiten características más recientes y la configuración de EF en consecuencia hace que use esas características. Si no configura explícitamente un nivel de compatibilidad, se elegirá un valor predeterminado razonable que no aproveche las características más recientes. Como resultado, se recomienda configurar explícitamente el nivel de compatibilidad que le gustaría tener.
Tenga en cuenta que esto solo cubre la propia configuración de EF del nivel de compatibilidad , que afecta a, por ejemplo, la SQL que genera, pero no afecta al nivel de compatibilidad configurado en la base de datos real. Es posible que las bases de datos hospedadas en versiones más recientes de SQL Server todavía estén configuradas con niveles de compatibilidad inferiores, lo que hace que no admitan las características más recientes, por lo que es posible que también tenga que cambiar el nivel de compatibilidad de la base de datos. Para obtener más información sobre los niveles de compatibilidad, consulte la documentación.
Para configurar EF con un nivel de compatibilidad, use UseCompatibilityLevel() de la siguiente manera:
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel(170));
Resistencia de la conexión
EF incluye funcionalidad para reintentar automáticamente comandos de base de datos con errores; para obtener más información, consulte la documentación. Cuando se usa UseAzureSql y UseAzureSynapse, la resistencia de conexión se configura automáticamente con la configuración adecuada específica para esas bases de datos. De lo contrario, al usar UseSqlServer, configure el proveedor con EnableRetryOnFailure como se muestra en la documentación de resistencia de conexión.
En algunos casos, UseSqlServer se puede llamar en código que no se puede controlar. A partir de EF 9, para habilitar la resistencia de conexión en estos escenarios, llame ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) de antemano (esto no es necesario con UseAzureSql y UseAzureSynapse).
Notas y advertencias
- El paquete Microsoft.Data.SqlClient se distribuye con más frecuencia que el proveedor de EF Core. Si desea aprovechar las nuevas características y correcciones de errores, puede agregar una referencia de paquete directo a la versión más reciente de Microsoft.Data.SqlClient.
- El proveedor de EF SQL Server usa Microsoft.Data.SqlClient y no el antiguo System.Data.Client; Si el proyecto toma una dependencia directa de SqlClient, asegúrese de que hace referencia al paquete Microsoft.Data.SqlClient. Para obtener más información sobre las diferencias entre Microsoft.Data.SqlClient y System.Data.SqlClient, consulte esta entrada de blog.
Motores de base de datos compatibles
- Microsoft SQL Server (2019 en adelante)
- Azure SQL Database
- Azure Synapse Analytics