GetConnectionString | CSharp
- GetConnectionString | CSharp
Conceito
O método GetConnectionString é um helper do IConfiguration utilizado para acessar valores dentro da seção padrão:
{
"ConnectionStrings": {
"DefaultConnection": "..."
}
}
Ele equivale a:
configuration["ConnectionStrings:DefaultConnection"]
Mas com melhor legibilidade e padronização.
Estrutura do appsettings.json
A estrutura correta deve seguir o padrão abaixo:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MinhaDb;User Id=sa;Password=123;",
"Redis": "localhost:6379",
"Mongo": "mongodb://localhost:27017"
}
}
- A chave obrigatória é
ConnectionStrings - Cada entrada representa uma conexão nomeada
- O nome (
DefaultConnection,Redis, etc.) é usado no código
Uso em Minimal API
Acesso direto
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
Exemplo com Entity Framework
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")));
Exemplo com Redis
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString("Redis");
});
Uso em API tradicional (Startup)
Injeção via construtor
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
}
Uso no ConfigureServices
public void ConfigureServices(IServiceCollection services)
{
var conn = Configuration.GetConnectionString("DefaultConnection");
}
Uso via Injeção de Dependência
public class MeuServico
{
private readonly string _connection;
public MeuServico(IConfiguration configuration)
{
_connection = configuration.GetConnectionString("DefaultConnection");
}
}
Uso com Options (fortemente tipado)
Classe de configuração
public class ConnectionStringsOptions
{
public string DefaultConnection { get; set; } = default!;
}
Registro
builder.Services.Configure<ConnectionStringsOptions>(
builder.Configuration.GetSection("ConnectionStrings"));
Consumo
public class MeuServico
{
private readonly string _connection;
public MeuServico(IOptions<ConnectionStringsOptions> options)
{
_connection = options.Value.DefaultConnection;
}
}
Múltiplos ambientes
Desenvolvimento
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=DevDb;"
}
}
Produção
{
"ConnectionStrings": {
"DefaultConnection": "Server=prod;Database=ProdDb;"
}
}
O .NET escolhe automaticamente com base na variável:
ASPNETCORE_ENVIRONMENT=Development
Variáveis de ambiente
Formato:
ConnectionStrings__DefaultConnection="Server=prod;Database=ProdDb;"
__representa hierarquia- sobrescreve o appsettings
Boas práticas
- Nunca hardcode connection string no código
- Use
GetConnectionStringao invés de acessar diretamente o path - Separe configurações por ambiente
- Utilize variáveis de ambiente em produção
- Evite versionar credenciais sensíveis
Erros comuns
Acessar chave errada
configuration["DefaultConnection"]
Correto:
configuration.GetConnectionString("DefaultConnection")
Nome incorreto no appsettings
{
"ConnectionString": {
"DefaultConnection": "..."
}
}
Correto:
{
"ConnectionStrings": {
"DefaultConnection": "..."
}
}
Observações técnicas
GetConnectionStringé apenas um wrapper- Funciona com qualquer provider (JSON, env, Azure Key Vault, etc.)
- Pode ser usado em qualquer camada da aplicação