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:
- V souboru
appsettings.Development.json
neboappsettings.json
souboru. - V proměnné prostředí
- Použití služby Azure Key Vault
- Použití nástroje Secret Manager
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");
}
}