Připojovací řetězce
Většina poskytovatelů databáze vyžaduje pro připojení k databázi určitou formu připojovací řetězec. Někdy tento připojovací řetězec obsahuje citlivé informace, které je potřeba chránit. Při přesouvání aplikace mezi prostředími, jako je vývoj, testování a produkční prostředí, může být také potřeba změnit připojovací řetězec.
ASP.NET Core
V ASP.NET Core je konfigurační systém velmi flexibilní a připojovací řetězec může být uložen v appsettings.json
proměnné prostředí, úložišti tajných kódů uživatele nebo jiném zdroji konfigurace. Další podrobnosti najdete v části Konfigurace v dokumentaci ASP.NET Core.
Můžete například použít nástroj Secret Manager k uložení hesla databáze a pak v generování uživatelského rozhraní použít připojovací řetězec, která se jednoduše skládá z 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
Nebo 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 pak obvykle konfiguruje Startup.cs
s připojovací řetězec, která se čte z konfigurace. Všimněte si, že GetConnectionString()
metoda hledá hodnotu konfigurace, jejíž klíč je ConnectionStrings:<connection string name>
. Chcete-li použít tuto metodu rozšíření, musíte importovat obor názvů Microsoft.Extensions.Configuration .
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}
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 App.config vaší aplikace (pokud používáte ASP.NET). Pokud vaše připojovací řetězec obsahuje citlivé informace, jako je uživatelské jméno a heslo, můžete 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řipojení ionové ř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");
}
}