Cadeias de Conexão

A maioria dos provedores de banco de dados requer alguma forma de cadeia de conexão para se conectar ao banco de dados. Às vezes, essa cadeia de conexão contém informações confidenciais que precisam ser protegidas. Talvez você também precise alterar a cadeia de conexão ao mover seu aplicativo entre ambientes, como desenvolvimento, teste e produção.

ASP.NET Core

em ASP.NET Core o sistema de configuração é muito flexível, e a cadeia de conexão pode ser armazenada no appsettings.json , uma variável de ambiente, o armazenamento de segredo do usuário ou outra fonte de configuração. consulte a seção configuração da documentação do ASP.NET Core para obter mais detalhes.

Por exemplo, você pode usar a ferramenta Gerenciador de segredo para armazenar a senha do banco de dados e, em scaffolding, usar uma cadeia de conexão que simplesmente consiste em .

dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Ou 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;"
  },
}

Em seguida, o contexto é normalmente configurado em Startup.cs com a cadeia de conexão que está sendo lida da configuração. Observe que o GetConnectionString() método procura um valor de configuração cuja chave seja ConnectionStrings:<connection string name> . Você precisa importar o namespace Microsoft. Extensions. Configuration para usar esse método de extensão.

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

Aplicativos do WPF do WinForms &

os aplicativos winforms, WPF e ASP.NET 4 têm um padrão de cadeia de conexão testado e testado. A cadeia de conexão deve ser adicionada ao arquivo de App.config do seu aplicativo (Web.config se você estiver usando ASP.NET). Se a cadeia de conexão contiver informações confidenciais, como nome de usuário e senha, você poderá 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>

Dica

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

Em seguida, você pode ler a cadeia de conexão usando a ConfigurationManager API no OnConfiguring método do contexto. Talvez seja necessário adicionar uma referência ao assembly da System.Configuration estrutura para poder usar essa 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)

Cadeias de conexão em um aplicativo UWP normalmente são uma conexão do SQLite que especifica apenas um nome de arquivo local. Normalmente, eles 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 normalmente são boas para serem deixadas no código, como mostrado abaixo. se você quiser movê-los para fora do código, o UWP dá suporte ao conceito de configurações, consulte a seção Configurações do aplicativo da documentação do 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");
    }
}