Partilhar via


Connection Strings

A maioria dos provedores de banco de dados requer uma cadeia de conexão para se conectar ao banco de dados. A cadeia de conexão:

  • Pode conter informações confidenciais que precisam ser protegidas.
  • Pode ser necessário alterar quando o aplicativo for movido para ambientes diferentes, como desenvolvimento, teste e produção.

Para obter mais informações, consulte Fluxos de autenticação seguros

ASP.NET Core

A configuração ASP.NET Core pode armazenar cadeias de conexão com vários provedores:

Warning

Os segredos nunca devem ser adicionados aos arquivos de configuração.

Por exemplo, a ferramenta Secret Manager pode armazenar a senha do banco de dados. Ao montar andaimes e usar o Secret Manager, uma cadeia de conexão consiste em Name=<database-alias>.

Consulte a seção Configuração da documentação do ASP.NET Core para obter mais informações.

dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"

Em seguida, no andaime, use uma string de conexão que consiste em Name=<database-alias>.

dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Warning

Este artigo usa um banco de dados local que não exige que o usuário seja autenticado. Os aplicativos de produção devem usar o fluxo de autenticação mais seguro disponível. Para obter mais informações sobre autenticação para aplicativos de teste e produção implantados, consulte Fluxos de autenticação seguros.

O exemplo a seguir mostra a cadeia de conexão armazenada em appsettings.json.

{
  "ConnectionStrings": {
    "BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
  },
}

O contexto é normalmente configurado em Program.cs, sendo que a cadeia de conexão é lida da configuração. Observação O método GetConnectionString procura um valor de configuração cuja chave é ConnectionStrings:<connection string name>. GetConnectionString requer o namespace Microsoft.Extensions.Configuration .

var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
     throw new InvalidOperationException("Connection string 'BloggingContext'" +
    " not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
    options.UseSqlServer(conString));

WinForms & Aplicações WPF

Os aplicativos WinForms, WPF e ASP.NET 4 têm um padrão de cadeia de conexão testado e comprovado. A cadeia de conexão deve ser adicionada ao ficheiro App.config do seu aplicativo, ou a Web.config quando estiver a usar ASP.NET. A cadeia de conexão que contém informações confidenciais, como nome de usuário e senha, deve proteger o conteúdo do arquivo de configuração usando a Configuração Protegida.

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <connectionStrings>
    <add name="BloggingDatabase"
         connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
  </connectionStrings>
</configuration>

Tip

A providerName configuração não é necessária em cadeias de conexão EF Core armazenadas no App.config porque o provedor de banco de dados é configurado via código.

Em seguida, pode ler a cadeia de conexão usando a ConfigurationManager API no método OnConfiguring do seu contexto. Talvez seja necessário adicionar uma referência ao assembly do System.Configuration framework para poder usar esta API.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
    }
}

Plataforma Universal do Windows (UWP)

As cadeias de conexão em um aplicativo UWP geralmente são uma conexão SQLite que apenas especifica um nome de arquivo local. Eles geralmente não contêm informações confidenciais e não precisam ser alterados à medida que um aplicativo é implantado. Como tal, essas cadeias de conexão geralmente são boas para serem deixadas no código, como mostrado abaixo. Se você deseja movê-los para fora do código, a UWP suporta o conceito de configurações, consulte a seção Configurações do aplicativo da documentação da UWP para obter detalhes.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}