VerbindungszeichenfolgenConnection Strings

Die meisten Datenbankanbieter benötigen eine bestimmte Verbindungs Zeichenfolge, um eine Verbindung mit der Datenbank herzustellen.Most database providers require some form of connection string to connect to the database. Manchmal enthält diese Verbindungs Zeichenfolge vertrauliche Informationen, die geschützt werden müssen.Sometimes this connection string contains sensitive information that needs to be protected. Möglicherweise müssen Sie auch die Verbindungs Zeichenfolge ändern, wenn Sie Ihre Anwendung zwischen Umgebungen, wie z. b. Entwicklung, Tests und Produktion, verschieben.You may also need to change the connection string as you move your application between environments, such as development, testing, and production.

ASP.NET CoreASP.NET Core

In ASP.net Core das Konfigurationssystem sehr flexibel, und die Verbindungs Zeichenfolge kann in appsettings.json , einer Umgebungsvariablen, dem geheimen Benutzerspeicher oder einer anderen Konfigurations Quelle gespeichert werden.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. Weitere Informationen finden Sie im Abschnitt zur Konfiguration der ASP.net Core-Dokumentation .See the Configuration section of the ASP.NET Core documentation for more details.

Beispielsweise können Sie das Geheimnis- Manager-Tool verwenden, um Ihr Daten Bank Kennwort zu speichern, und dann in Gerüstbau eine Verbindungs Zeichenfolge verwenden, die einfach aus besteht Name=<database-alias> .For instance, you can use the Secret Manager tool to store your database password and then, in scaffolding, use a connection string that simply consists of Name=<database-alias>.

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

Das folgende Beispiel zeigt die Verbindungs Zeichenfolge, die in gespeichert ist appsettings.json .Or the following example shows the connection string stored in appsettings.json.

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

Anschließend wird der Kontext in der Regel in konfiguriert Startup.cs , wobei die Verbindungs Zeichenfolge aus der Konfiguration gelesen wird.Then the context is typically configured in Startup.cs with the connection string being read from configuration. Beachten Sie, dass die- GetConnectionString() Methode nach einem Konfigurations Wert sucht, dessen Schlüssel ist ConnectionStrings:<connection string name> .Note the GetConnectionString() method looks for a configuration value whose key is ConnectionStrings:<connection string name>. Sie müssen den Microsoft.Extensions.Configurations -Namespace importieren, um diese Erweiterungsmethode zu verwenden.You need to import the Microsoft.Extensions.Configuration namespace to use this extension method.

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

WinForms-& WPF-AnwendungenWinForms & WPF Applications

WinForms-, WPF-und ASP.NET 4-Anwendungen haben ein bewährtes und getestetes Verbindungs Zeichen folgen Muster.WinForms, WPF, and ASP.NET 4 applications have a tried and tested connection string pattern. Die Verbindungs Zeichenfolge sollte der App.config Datei Ihrer Anwendung hinzugefügt werden (Web.config, wenn Sie ASP.NET verwenden).The connection string should be added to your application's App.config file (Web.config if you are using ASP.NET). Wenn Ihre Verbindungs Zeichenfolge vertrauliche Informationen (z. b. Benutzername und Kennwort) enthält, können Sie den Inhalt der Konfigurationsdatei mithilfe der geschützten Konfigurationschützen.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>

Tipp

Die providerName Einstellung ist für EF Core Verbindungs Zeichenfolgen, die in App.config gespeichert sind, nicht erforderlich, da der Datenbankanbieter über Code konfiguriert ist.The providerName setting is not required on EF Core connection strings stored in App.config because the database provider is configured via code.

Anschließend können Sie die Verbindungs ConfigurationManager Zeichenfolge mithilfe der-API in der-Methode Ihres Kontexts lesen OnConfiguring .You can then read the connection string using the ConfigurationManager API in your context's OnConfiguring method. Möglicherweise müssen Sie einen Verweis auf die Frameworkassembly System.Configuration hinzufügen, damit diese API verwendet werden kann.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);
    }
}

Universelle Windows-Plattform (UWP)Universal Windows Platform (UWP)

Verbindungs Zeichenfolgen in einer UWP-Anwendung sind in der Regel eine SQLite-Verbindung, die nur einen lokalen Dateinamen angibt.Connection strings in a UWP application are typically a SQLite connection that just specifies a local filename. Sie enthalten in der Regel keine vertraulichen Informationen und müssen nicht geändert werden, wenn eine Anwendung bereitgestellt wird.They typically do not contain sensitive information, and do not need to be changed as an application is deployed. Daher können diese Verbindungs Zeichenfolgen in der Regel im Code verbleiben, wie unten gezeigt.As such, these connection strings are usually fine to be left in code, as shown below. Wenn Sie Sie aus dem Code heraus verschieben möchten, unterstützt UWP das Konzept der Einstellungen. Weitere Informationen finden Sie im Abschnitt App-Einstellungen der UWP-Dokumentation .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");
    }
}