Sdílet prostřednictvím


Připojovací řetězce

Většina poskytovatelů databáze vyžaduje, aby se k databázi připojili připojovací řetězec. Připojovací řetězec:

  • Může obsahovat citlivé informace, které je potřeba chránit.
  • Může být potřeba změnit, když se aplikace přesune do různých prostředí, jako je vývoj, testování a produkční prostředí.

Další informace najdete v tématu Zabezpečené toky ověřování.

ASP.NET Core

Konfigurace ASP.NET Core může ukládat připojovací řetězec s různými poskytovateli:

Upozorňující

Tajné kódy by nikdy neměly být přidány do konfiguračních souborů.

Například nástroj Secret Manager může uložit heslo databáze. Při generování a používání správce tajných kódů se připojovací řetězec skládá z Name=<database-alias>.

Další informace najdete v části Konfigurace v dokumentaci ASP.NET Core.

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

V generování uživatelského rozhraní pak použijte připojovací řetězec, která se skládá z Name=<database-alias>.

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

Upozorňující

Tento článek používá místní databázi, která nevyžaduje ověření uživatele. Produkční aplikace by měly používat nejbezpečnější dostupný tok ověřování. Další informace o ověřování nasazených testovacích a produkčníchaplikacích

Následující příklad ukazuje připojovací řetězec uložené v appsettings.json.

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

Kontext se obvykle konfiguruje Program.cs s připojovací řetězec, která se čte z konfigurace. Všimněte si GetConnectionString metoda hledá konfigurační hodnotu, jejíž klíč je ConnectionStrings:<connection string name>. GetConnectionString vyžaduje obor názvů 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));

Aplikace WinForms &WPF

WinForms, WPF a ASP.NET 4 aplikace mají vyzkoušený a otestovaný vzor připojovací řetězec. Připojovací řetězec byste měli přidat do souboru aplikace App.config nebo Web.config při použití ASP.NET. Připojovací řetězec obsahující citlivé informace, jako je uživatelské jméno a heslo, by měl chránit obsah konfiguračního souboru pomocí chráněné konfigurace.

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

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

Tip

Nastavení providerName se nevyžaduje u ef Core připojovací řetězec uložených v App.config, protože zprostředkovatel databáze je nakonfigurovaný prostřednictvím kódu.

Pak můžete číst připojovací řetězec pomocí ConfigurationManager rozhraní API v metodě vašeho kontextuOnConfiguring. Možná budete muset přidat odkaz na System.Configuration sestavení architektury, aby bylo možné toto rozhraní API používat.

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

Univerzální platforma Windows (UPW)

Připojovací řetězce v aplikaci pro UPW jsou obvykle připojení SQLite, které pouze určuje místní název souboru. Obvykle neobsahují citlivé informace a není nutné je měnit při nasazování aplikace. Tyto připojovací řetězec jsou obvykle v kódu v pořádku, jak je znázorněno níže. Pokud je chcete přesunout mimo kód, upW podporuje koncept nastavení, podrobnosti najdete v části Nastavení aplikace v dokumentaci pro UPW.

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