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