Udostępnij za pośrednictwem


Parametry połączenia

Większość dostawców baz danych wymaga parametry połączenia do nawiązania połączenia z bazą danych. Parametry połączenia:

  • Może zawierać poufne informacje, które muszą być chronione.
  • Może być konieczne zmianę, gdy aplikacja przechodzi do różnych środowisk, takich jak programowanie, testowanie i produkcja.

Aby uzyskać więcej informacji, zobacz Bezpieczne przepływy uwierzytelniania

ASP.NET Core

Konfiguracja ASP.NET Core może przechowywać parametry połączenia z różnymi dostawcami:

Ostrzeżenie

Wpisy tajne nigdy nie powinny być dodawane do plików konfiguracji.

Na przykład narzędzie Secret Manager może przechowywać hasło bazy danych. Podczas tworzenia szkieletów i używania menedżera wpisów tajnych Name=<database-alias>parametry połączenia składa się z .

Aby uzyskać więcej informacji, zobacz sekcję Konfiguracja dokumentacji ASP.NET Core.

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

Następnie w rusztowaniu należy użyć parametry połączenia, który składa się z Name=<database-alias>.

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

Ostrzeżenie

W tym artykule jest używana lokalna baza danych, która nie wymaga uwierzytelnienia użytkownika. Aplikacje produkcyjne powinny korzystać z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Aby uzyskać więcej informacji na temat uwierzytelniania dla wdrożonych aplikacji testowych i produkcyjnych, zobacz Bezpieczne przepływy uwierzytelniania.

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

Kontekst jest zwykle konfigurowany przy Program.cs użyciu parametry połączenia odczytywania z konfiguracji. Zwróć uwagę, że metoda GetConnectionString szuka wartości konfiguracji, której kluczem jest ConnectionStrings:<connection string name>. GetConnectionStringwymaga przestrzeni nazw 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));

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 aplikacji App.config lub Web.config podczas korzystania z ASP.NET. Parametry połączenia zawierające poufne informacje, takie jak nazwa użytkownika i hasło, powinny 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łączenia w aplikacji platformy UWP są zwykle 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ę Ustawienia aplikacji 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");
    }
}