Verbindungszeichenfolgen
Für die meisten Datenbankanbieter ist eine Verbindungszeichenfolge erforderlich, um eine Verbindung mit der Datenbank herzustellen. Die Verbindungszeichenfolge:
- Kann vertrauliche Informationen enthalten, die geschützt werden müssen.
- Kann sich ändern, wenn die App zu verschiedenen Umgebungen wechselt, z. B. Entwicklung, Test und Produktion.
Weitere Informationen finden Sie unter Sichere Authentifizierungsflüsse
ASP.NET Core
Die ASP.NET Core-Konfiguration kann Verbindungszeichenfolge mit verschiedenen Anbietern speichern:
- In der Datei oder
appsettings.json
in derappsettings.Development.json
Datei. - In einer Umgebungsvariable
- Verwenden von Azure Key Vault
- Verwenden des Tools "Geheimer Manager"
Warnung
Geheime Schlüssel sollten nie zu Konfigurationsdateien hinzugefügt werden.
Beispielsweise kann das Tool "Geheimer Manager" das Datenbankkennwort speichern. Bei der Gerüsterstellung und Verwendung des geheimen Managers besteht ein Verbindungszeichenfolge aus Name=<database-alias>
.
Weitere Informationen finden Sie im Abschnitt "Konfiguration" der ASP.NET Core-Dokumentation .
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
Verwenden Sie dann im Gerüst eine Verbindungszeichenfolge, die Name=<database-alias>
aus .
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer
Warnung
In diesem Artikel wird eine lokale Datenbank verwendet, für die keine Authentifizierung des Benutzers erforderlich ist. Produktions-Apps sollten den sichersten verfügbaren Ablauf für die Authentifizierung verwenden. Weitere Informationen zur Authentifizierung für bereitgestellte Test- und Produktions-Apps finden Sie unter Sichere Authentifizierungsflows.
Das folgende Beispiel zeigt die Verbindungszeichenfolge gespeichert in appsettings.json
.
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Der Kontext wird in der Regel mit Program.cs
dem Verbindungszeichenfolge konfiguriert, der aus der Konfiguration gelesen wird. Beachten Sie, dass die GetConnectionString-Methode nach einem Konfigurationswert sucht, dessen Schlüssel lautet ConnectionStrings:<connection string name>
. GetConnectionString
erfordert den Namespace "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));
WinForms- & WPF-Anwendungen
WinForms-, WPF- und ASP.NET 4-Anwendungen verfügen über ein bewährtes Verbindungszeichenfolgenmuster. Die Verbindungszeichenfolge sollte der Datei Ihrer Anwendung App.config
oder Web.config
bei Verwendung von ASP.NET hinzugefügt werden. Die Verbindungszeichenfolge mit vertraulichen Informationen, z. B. Benutzername und Kennwort, sollte 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");
}
}