Cadeias de caracteres de conexãoConnection Strings

A maioria dos provedores de banco de dados requer alguma forma de cadeia de caracteres de conexão para se conectar ao banco de dados.Most database providers require some form of connection string to connect to the database. Às vezes, essa cadeia de caracteres de conexão contém informações confidenciais que precisam ser protegidos.Sometimes this connection string contains sensitive information that needs to be protected. Talvez você precise alterar a cadeia de caracteres de conexão ao mover seu aplicativo entre ambientes, como desenvolvimento, teste e produção.You may also need to change the connection string as you move your application between environments, such as development, testing, and production.

Aplicativos do .NET framework.NET Framework Applications

Aplicativos do .NET framework, como WinForms, o WPF, o Console e o ASP.NET 4, com um padrão de cadeia de caracteres de conexão testada e..NET Framework applications, such as WinForms, WPF, Console, and ASP.NET 4, have a tried and tested connection string pattern. A cadeia de caracteres de conexão deve ser adicionada ao seu arquivo App. config de aplicativos (Web. config se você estiver usando o ASP.NET).The connection string should be added to your applications App.config file (Web.config if you are using ASP.NET). Se a cadeia de conexão contém informações confidenciais, como nome de usuário e senha, você pode proteger o conteúdo do arquivo de configuração usando configuração protegida.If your connection string contains sensitive information, such as username and password, you can protect the contents of the configuration file using Protected Configuration.

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

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

Dica

O providerName configuração não é necessário em cadeias de caracteres de conexão principal EF armazenadas em App. config porque o provedor de banco de dados está configurado por meio de código.The providerName setting is not required on EF Core connection strings stored in App.config because the database provider is configured via code.

Em seguida, você pode ler a cadeia de conexão usando o ConfigurationManager API em seu contexto OnConfiguring método.You can then read the connection string using the ConfigurationManager API in your context's OnConfiguring method. Talvez seja necessário adicionar uma referência para o System.Configuration assembly do framework para poder usar essa API.You may need to add a reference to the System.Configuration framework assembly to be able to use this 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);
    }
}

UWP (Plataforma Universal do Windows)Universal Windows Platform (UWP)

Cadeias de caracteres de Conexão em um aplicativo de UWP costumam ser uma conexão SQLite que especifica apenas um nome de arquivo local.Connection strings in a UWP application are typically a SQLite connection that just specifies a local filename. Normalmente, eles não contêm informações confidenciais e não precisam ser alteradas como um aplicativo é implantado.They typically do not contain sensitive information, and do not need to be changed as an application is deployed. Assim, essas cadeias de caracteres de conexão são normalmente não há problemas em código, conforme mostrado abaixo.As such, these connection strings are usually fine to be left in code, as shown below. Se você deseja movê-los fora do código, em seguida, UWP oferece suporte ao conceito de configurações, consulte o seção configurações do aplicativo da documentação UWP para obter detalhes.If you wish to move them out of code then UWP supports the concept of settings, see the App Settings section of the UWP documentation for details.

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");
    }
}

ASP.NET CoreASP.NET Core

No núcleo do ASP.NET, o sistema de configuração é muito flexível e a cadeia de caracteres de conexão pode ser armazenada em appsettings.json, uma variável de ambiente, o armazenamento de segredo do usuário ou outra fonte de configuração.In ASP.NET Core the configuration system is very flexible, and the connection string could be stored in appsettings.json, an environment variable, the user secret store, or another configuration source. Consulte o seção de configuração da documentação do ASP.NET Core para obter mais detalhes.See the Configuration section of the ASP.NET Core documentation for more details. O exemplo a seguir mostra a cadeia de conexão armazenada na appsettings.json.The following example shows the connection string stored in appsettings.json.

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

O contexto é normalmente configurado no Startup.cs com a cadeia de caracteres de conexão que está sendo lida da configuração.The context is typically configured in Startup.cs with the connection string being read from configuration. Observe o GetConnectionString() método procura um valor de configuração cuja chave ConnectionStrings:<connection string name>.Note the GetConnectionString() method looks for a configuration value whose key is ConnectionStrings:<connection string name>.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}