Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esse provedor de banco de dados permite que o Entity Framework Core seja usado com o Microsoft SQL Server (incluindo o Azure SQL e o Azure Synapse Analytics). O provedor é mantido como parte do Entity Framework Core Project.
Install
Instale o pacote NuGet Microsoft.EntityFrameworkCore.SqlServer.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Uso e configuração
Depois que seu projeto fizer referência ao pacote nuget, configure o EF para SQL Server da seguinte maneira:
public class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("<CONNECTION STRING>");
}
}
Ao usar EF com injeção de dependência (por exemplo, ASP.NET), use o seguinte:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("MyContext")));
Compatibility level
Opcionalmente, você pode configurar o EF com o nível de compatibilidade do seu banco de dados; níveis de compatibilidade mais altos permitem recursos mais recentes, e configurar o EF de acordo faz com que ele use esses recursos. Se você não configurar explicitamente um nível de compatibilidade, será escolhido um padrão razoável que pode não aproveitar os recursos mais recentes. Como resultado, é recomendável configurar explicitamente o nível de compatibilidade que você gostaria de ter.
Observe que isso cobre apenas a própria configuração do EF do nível de compatibilidade - afetando, por exemplo, o SQL que ele gera - mas não afeta o nível de compatibilidade configurado em seu banco de dados real. Os bancos de dados hospedados em versões mais recentes do SQL Server ainda podem ser configurados com níveis de compatibilidade mais baixos, fazendo com que eles não ofereçam suporte aos recursos mais recentes, portanto, talvez seja necessário alterar o nível de compatibilidade em seu banco de dados também. Para obter mais informações sobre níveis de compatibilidade, consulte a documentação.
Para configurar o EF com um nível de compatibilidade, use UseCompatibilityLevel() o seguinte:
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());
Connection resiliency
O EF inclui funcionalidade para repetir automaticamente comandos de banco de dados com falha; Para obter mais informações, consulte a documentação. Ao usar UseAzureSql e UseAzureSynapse, a resiliência da conexão é configurada automaticamente com as configurações apropriadas específicas para esses bancos de dados. Caso contrário, ao usar UseSqlServero , configure o provedor com EnableRetryOnFailure conforme mostrado na documentação de resiliência de conexão.
Em alguns casos, UseSqlServer pode ser chamado em código que você não pode controlar. A partir do EF 9, para habilitar a resiliência de conexão em tais cenários, ligue ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) com antecedência (isso não é necessário com UseAzureSql e UseAzureSynapse).
Notas e ressalvas
- O pacote Microsoft.Data.SqlClient é fornecido com mais frequência do que o provedor EF Core. Se você quiser aproveitar os novos recursos e correções de bugs, você pode adicionar uma referência direta de pacote para a versão mais recente do Microsoft.Data.SqlClient.
- O provedor EF SQL Server usa Microsoft.Data.SqlClient e não o antigo System.Data.Client; se o seu projeto tem uma dependência direta do SqlClient, certifique-se de que ele faz referência ao pacote Microsoft.Data.SqlClient. Para obter mais informações sobre as diferenças entre Microsoft.Data.SqlClient e System.Data.SqlClient, consulte esta postagem no blog.
Mecanismos de banco de dados suportados
- Microsoft SQL Server (a partir de 2019)
- Base de Dados SQL do Azure
- Azure Synapse Analytics