Parametry połączeniaConnection Strings

Większość dostawców bazy danych wymaga pewnej formy ciągu połączenia w celu połączenia z bazą danych.Most database providers require some form of connection string to connect to the database. Czasami ta parametry połączenia zawierają poufne informacje, które wymagają ochrony.Sometimes this connection string contains sensitive information that needs to be protected. Należy również zmienić parametry połączenia, ponieważ przenoszenie aplikacji między środowiskach, na przykład programowania, testowania i produkcji.You may also need to change the connection string as you move your application between environments, such as development, testing, and production.

Aplikacje środowiska .NET framework.NET Framework Applications

Aplikacji .NET framework, takich jak WinForms, WPF konsoli i platformy ASP.NET 4 mają wzorzec ciągu połączenia próby sklonowania i przetestowane..NET Framework applications, such as WinForms, WPF, Console, and ASP.NET 4, have a tried and tested connection string pattern. Parametry połączenia należy dodać do pliku App.config aplikacji (Web.config Jeśli używasz programu ASP.NET).The connection string should be added to your applications App.config file (Web.config if you are using ASP.NET). Jeśli parametry połączenia zawiera poufne informacje, takie jak nazwa użytkownika i hasło, chronić zawartość przy użyciu pliku konfiguracji chronione konfiguracji.If your connection string contains sensitive information, such as username and password, you can protect the contents of the configuration file using Protected Configuration.

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

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

Porada

providerName Ustawienie nie jest wymagane na parametry połączenia podstawowej EF przechowywane w pliku App.config, ponieważ dostawca bazy danych są skonfigurowane za pomocą kodu.The providerName setting is not required on EF Core connection strings stored in App.config because the database provider is configured via code.

Następnie można znaleźć przy użyciu ciągu połączenia ConfigurationManager interfejsu API w sieci w kontekście OnConfiguring metody.You can then read the connection string using the ConfigurationManager API in your context's OnConfiguring method. Może być konieczne dodanie odwołania do System.Configuration zestawu struktury, aby można było używać tego interfejsu API.You may need to add a reference to the System.Configuration framework assembly to be able to use this API.

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)Universal Windows Platform (UWP)

Parametry połączenia w aplikacji platformy uniwersalnej systemu Windows są zwykle połączenie SQLite, które właśnie Określa nazwę pliku lokalnego.Connection strings in a UWP application are typically a SQLite connection that just specifies a local filename. One zazwyczaj nie zawierają informacji poufnych, a nie trzeba można zmienić, ponieważ aplikacja jest wdrażana.They typically do not contain sensitive information, and do not need to be changed as an application is deployed. Tak te parametry połączenia są zwykle małe pozostać w kodzie, jak pokazano poniżej.As such, these connection strings are usually fine to be left in code, as shown below. Jeśli chcesz przenieść je z kodu to platformy uniwersalnej systemu Windows obsługuje pojęcie ustawień, zobacz ustawień aplikacji części dokumentacji platformy uniwersalnej systemu Windows szczegółowe informacje.If you wish to move them out of code then UWP supports the concept of settings, see the App Settings section of the UWP documentation for details.

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

Platformy ASP.NET CoreASP.NET Core

W przypadku platformy ASP.NET Core jest bardzo elastyczny system konfiguracji i ciągu połączenia może być przechowywany w appsettings.json, wartość zmiennej środowiskowej, tajne magazynie użytkownika lub inne źródło konfiguracji.In ASP.NET Core the configuration system is very flexible, and the connection string could be stored in appsettings.json, an environment variable, the user secret store, or another configuration source. Zobacz sekcji konfiguracji w dokumentacji platformy ASP.NET Core więcej szczegółów.See the Configuration section of the ASP.NET Core documentation for more details. W poniższym przykładzie przedstawiono parametry połączenia, przechowywane w appsettings.json.The following example shows the connection string stored in appsettings.json.

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

Kontekst jest zazwyczaj skonfigurowany w Startup.cs ciągu połączenia jest odczytywana z konfiguracji.The context is typically configured in Startup.cs with the connection string being read from configuration. Uwaga GetConnectionString() metoda szuka wartości konfiguracji, w których klucz jest ConnectionStrings:<connection string name>.Note the GetConnectionString() method looks for a configuration value whose key is ConnectionStrings:<connection string name>.

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