Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Większość dostawców baz danych wymaga łańcucha połączenia do nawiązania połączenia z bazą danych. Ciąg 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:
- W pliku
appsettings.Development.json
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 tajemnic Name=<database-alias>
parametry połączenia składają 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 użyj ciągu 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 w Program.cs
, a ciąg połączenia jest odczytywany 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ą sprawdzony wzorzec łańcucha 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 z użyciem interfejsu API ConfigurationManager
w metodzie OnConfiguring
swojego kontekstu. Aby móc korzystać z tego interfejsu API System.Configuration
, może być konieczne dodanie odwołania do biblioteki frameworku.
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 zazwyczaj można pozostawić 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");
}
}