Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esse provedor de banco de dados permite que o Entity Framework Core seja usado com o Microsoft SQL Server (incluindo o SQL do Azure e o Azure Synapse Analytics). O provedor é mantido como parte do Projeto Entity Framework Core.
Install
Instale o pacote Microsoft.EntityFrameworkCore.SqlServer NuGet.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Uso e configuração
Depois que o 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 o 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")));
O provedor do SQL Server do EF usa Microsoft.Data.SqlClient como seu provedor de ADO.NET subjacente. Para obter mais informações sobre as cadeias de conexão aceitas pelo SqlClient, consulte esta página.
Nível de compatibilidade
Opcionalmente, você pode configurar o EF com o nível de compatibilidade do banco de dados; níveis de compatibilidade mais altos permitem recursos mais recentes e configurar o EF adequadamente 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 abrange apenas a configuração do próprio EF do nível de compatibilidade , afetando, por exemplo, o SQL gerado, 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 estar 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 no 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() como segue:
optionsBuilder.UseSqlServer("<CONNECTION STRING>", o => o.UseCompatibilityLevel());
Resiliência de conexão
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 de conexão é configurada automaticamente com as configurações apropriadas específicas para esses bancos de dados. Caso contrário, ao usar UseSqlServer, configure o provedor com EnableRetryOnFailure como mostrado na documentação sobre resiliência de conexão.
Em alguns casos, UseSqlServer pode ser chamado no código que você não pode controlar. A partir do EF 9, para habilitar a resiliência de conexão nesses cenários, chame ConfigureSqlEngine(c => c.EnableRetryOnFailureByDefault()) com antecedência (isso não é necessário com UseAzureSql e UseAzureSynapse).
Anotações e advertências
- 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, poderá adicionar uma referência de pacote direto à versão mais recente do Microsoft.Data.SqlClient.
- O provedor do EF SQL Server usa Microsoft.Data.SqlClient e não o System.Data.Client mais antigo; se o projeto usa uma dependência direta do SqlClient, verifique se 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 com suporte
- Microsoft SQL Server (2019 em diante)
- Banco de Dados SQL do Azure
- Azure Synapse Analytics