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:
appsettings.Development.json
W pliku lubappsettings.json
.- W zmiennej środowiskowej
- Korzystanie z usługi Azure Key Vault
- Korzystanie z narzędzia Secret Manager
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>
. GetConnectionString
wymaga 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");
}
}