Skip to main content

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 GetConnectionString ao 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