Megosztás a következőn keresztül:


Kapcsolati sztringek

A legtöbb adatbázis-szolgáltatónak kapcsolati sztringre van szüksége az adatbázishoz való csatlakozáshoz. A kapcsolati karakterlánc:

  • Bizalmas információkat tartalmazhat, amelyeket védeni kell.
  • Előfordulhat, hogy módosítani kell az alkalmazás beállításait, amikor különböző környezetekbe telepítik, például fejlesztési, tesztelési vagy éles környezetbe.

További információ: Biztonságos hitelesítési folyamatok

ASP.NET Core

A ASP.NET Core-konfiguráció képes a kapcsolati sztringek tárolására különböző szolgáltatókkal:

Figyelmeztetés

A titkos kulcsokat soha nem szabad hozzáadni a konfigurációs fájlokhoz.

A Secret Manager eszköz például képes tárolni az adatbázis jelszavát. A vázstruktúra létrehozásakor és a Secret Manager használatakor a kapcsolati sztring a Name=<database-alias> következőből áll.

További információt a ASP.NET Core dokumentációjának Konfiguráció szakaszában talál.

dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"

Ezután az állványzatban használjon egy kapcsolati sztringet, amely a Name=<database-alias>következőből áll: .

dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Figyelmeztetés

Ez a cikk egy helyi adatbázist használ, amely nem igényli a felhasználó hitelesítését. A termelésben használt alkalmazásoknak az elérhető legbiztonságosabb hitelesítési folyamatot kell használniuk. Az üzembe helyezett teszt- és éles alkalmazások hitelesítéséről további információt Biztonságos hitelesítési folyamatokcímű témakörben talál.

Az alábbi példa a következő helyen tárolt kapcsolati sztringet mutatja be appsettings.json.

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

A környezetet általában úgy konfigurálják Program.cs, hogy a kapcsolati sztringet a konfigurációból olvassa be. Vegye figyelembe, hogy a GetConnectionString metódus olyan konfigurációs értéket keres, amelynek a kulcsa.ConnectionStrings:<connection string name> GetConnectionString a Microsoft.Extensions.Configuration névteret igényli.

var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
     throw new InvalidOperationException("Connection string 'BloggingContext'" +
    " not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
    options.UseSqlServer(conString));

WinForms & WPF-alkalmazások

A WinForms, a WPF és az ASP.NET 4 alkalmazások kipróbált és tesztelt kapcsolati sztringmintával rendelkeznek. A kapcsolati sztringet hozzá kell adni az alkalmazás fájljához App.config , vagy Web.config ASP.NET használatakor. A bizalmas adatokat, például felhasználónevet és jelszót tartalmazó kapcsolati sztringnek a konfigurációs fájl tartalmát Védett Konfiguráció használatával kell megvédenie.

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <connectionStrings>
    <add name="BloggingDatabase"
         connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
  </connectionStrings>
</configuration>

Jótanács

A providerName beállítás nem szükséges az EF Core kapcsolati sztringeknél, amelyeket a App.config tárol, mert az adatbázis-szolgáltató kóddal van konfigurálva.

Ezután a kapcsolati sztringet a környezet OnConfiguring metódusában, az ConfigurationManager API használatával olvashatja el. Előfordulhat, hogy az API használatához hozzá kell adnia egy hivatkozást a System.Configuration keretrendszer-szerelvényhez.

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ális Windows-platform (UWP)

Az UWP-alkalmazások kapcsolati sztringjei általában egy SQLite-kapcsolat, amely csak egy helyi fájlnevet ad meg. Ezek általában nem tartalmaznak bizalmas információkat, és nem kell módosítani az alkalmazás üzembe helyezésekor. Ezért ezek a kapcsolati láncok általában nyugodtan maradhatnak a kódban, ahogy az alább látható. Ha ki szeretné őket helyezni a kódból, akkor az UWP támogatja a beállítások fogalmát, a részletekért tekintse meg az UWP dokumentációjának Alkalmazásbeállítások szakaszát .

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