Parametry połączenia

Większość dostawców baz danych wymaga pewnego rodzaju parametry połączenia, aby nawiązać połączenie z bazą danych. Czasami ta parametry połączenia zawiera poufne informacje, które muszą być chronione. Może być również konieczne zmianę parametry połączenia podczas przenoszenia aplikacji między środowiskami, takimi jak programowanie, testowanie i produkcja.

ASP.NET Core

W ASP.NET Core system konfiguracji jest bardzo elastyczny, a parametry połączenia mogą być przechowywane w appsettings.jsonzmiennej środowiskowej, magazynie wpisów tajnych użytkownika lub innym źródle konfiguracji. Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja dokumentacji ASP.NET Core.

Na przykład za pomocą narzędzia Secret Manager można przechowywać hasło bazy danych, a następnie w szkieletach użyć parametry połączenia, który po prostu składa się 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

W poniższym przykładzie przedstawiono parametry połączenia przechowywane w pliku appsettings.json.

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

Następnie kontekst jest zwykle konfigurowany przy Startup.cs użyciu parametry połączenia odczytywania z konfiguracji. Zwróć uwagę, że GetConnectionString() metoda szuka wartości konfiguracji, której kluczem jest ConnectionStrings:<connection string name>. Aby użyć tej metody rozszerzenia, należy zaimportować przestrzeń nazw Microsoft.Extensions.Configuration .

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}

Aplikacje WinForms i WPF

Aplikacje WinForms, WPF i ASP.NET 4 mają wypróbowany i przetestowany wzorzec parametry połączenia. Parametry połączenia należy dodać do pliku App.config aplikacji (Web.config, jeśli używasz ASP.NET). Jeśli parametry połączenia zawiera poufne informacje, takie jak nazwa użytkownika i hasło, możesz chronić zawartość pliku konfiguracji przy użyciu chronionej konfiguracji.

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

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

Napiwek

Ustawienie providerName nie jest wymagane w programie EF Core parametry połączenia przechowywanych w pliku App.config, ponieważ dostawca bazy danych jest skonfigurowany za pomocą kodu.

Następnie możesz odczytać parametry połączenia przy użyciu interfejsu ConfigurationManager API w metodzie OnConfiguring kontekstu. Aby móc korzystać z tego interfejsu System.Configuration API, może być konieczne dodanie odwołania do zestawu platformy.

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

Platforma uniwersalna systemu Windows (UWP)

parametry Połączenie ion w aplikacji platformy UWP są zazwyczaj połączeniem SQLite, które określa tylko nazwę pliku lokalnego. Zazwyczaj nie zawierają informacji poufnych i nie trzeba ich zmieniać w miarę wdrażania aplikacji. W związku z tym te parametry połączenia są zwykle w kodzie, jak pokazano poniżej. Jeśli chcesz je przenieść z kodu, platforma UWP obsługuje koncepcję ustawień, zobacz sekcję App Ustawienia w dokumentacji platformy UWP, aby uzyskać szczegółowe informacje.

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