Verbindungszeichenfolgen

Die meisten Datenbankanbieter erfordern eine Form der Verbindungszeichenfolge, um eine Verbindung mit der Datenbank herzustellen. Manchmal enthält diese Verbindungszeichenfolge vertrauliche Informationen, die geschützt werden müssen. Möglicherweise müssen Sie auch die Verbindungszeichenfolge ändern, während Sie Ihre Anwendung zwischen Umgebungen verschieben, z. B. Entwicklung, Tests und Produktion.

ASP.NET Core

In ASP.NET Core ist das Konfigurationssystem sehr flexibel, und die Verbindungszeichenfolge kann in appsettings.json, einer Umgebungsvariable, dem Benutzergeheimnisspeicher oder einer anderen Konfigurationsquelle gespeichert werden. Weitere Informationen finden Sie im Abschnitt „Konfiguration“ der ASP.NET Core-Dokumentation.

Sie können beispielsweise das Geheimnis-Manager-Tool verwenden, um Ihr Datenbankkennwort zu speichern, und verwenden Sie dann im Gerüstbau eine Verbindungszeichenfolge, die einfach aus Name=<database-alias> besteht.

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

Oder das folgende Beispiel zeigt eine in appsettings.json gespeicherte Verbindungszeichenfolge.

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

Anschließend wird der Kontext in der Regel in Startup.cs konfiguriert, wobei die Verbindungszeichenfolge aus der Konfiguration gelesen wird. Beachten Sie, dass die GetConnectionString()-Methode nach einem Konfigurationswert sucht, dessen Schlüssel ConnectionStrings:<connection string name> ist. Sie müssen den Microsoft.Extensions.Configuration-Namespace importieren, um diese Erweiterungsmethode zu verwenden.

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

WinForms- & WPF-Anwendungen

WinForms-, WPF- und ASP.NET 4-Anwendungen verfügen über ein bewährtes Verbindungszeichenfolgenmuster. Die Verbindungszeichenfolge sollte der App.config-Datei (Web.config, wenn Sie ASP.NET verwenden) Ihrer Anwendung hinzugefügt werden. Wenn Ihre Verbindungszeichenfolge vertrauliche Informationen wie Benutzername und Kennwort enthält, können Sie den Inhalt der Konfigurationsdatei mithilfe der Geschützten Konfiguration schützen.

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

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

Tipp

Die Einstellung providerName ist für in App.config gespeicherte EF Core-Verbindungszeichenfolgen nicht erforderlich, da der Datenbankanbieter über Code konfiguriert ist.

Anschließend können Sie die Verbindungszeichenfolge mithilfe der ConfigurationManager-API in der OnConfiguring-Methode Ihres Kontexts lesen. Möglicherweise müssen Sie einen Verweis auf die Frameworkassembly System.Configuration hinzufügen, damit diese API verwendet werden kann.

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

Universelle Windows-Plattform (UWP)

Verbindungszeichenfolgen in einer UWP-Anwendung sind in der Regel eine SQLite-Verbindung, die nur einen lokalen Dateinamen angibt. Sie enthalten in der Regel keine vertraulichen Informationen und müssen nicht geändert werden, wenn eine Anwendung bereitgestellt wird. Daher können diese Verbindungszeichenfolgen in der Regel in Code belassen werden, wie unten dargestellt. Wenn Sie sie aus dem Code verschieben möchten, unterstützt UWP das Konzept der Einstellungen. Weitere Informationen finden Sie im Abschnitt „App-Einstellungen“ der UWP-Dokumentation.

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