Chaînes de connexionConnection Strings

La plupart des fournisseurs de base de données nécessitent une certaine forme de chaîne de connexion pour se connecter à la base de données.Most database providers require some form of connection string to connect to the database. Parfois, cette chaîne de connexion contient des informations sensibles qui doivent être protégées.Sometimes this connection string contains sensitive information that needs to be protected. Vous devez également modifier la chaîne de connexion lorsque vous déplacez votre application entre les environnements, tels que le développement, test et de production.You may also need to change the connection string as you move your application between environments, such as development, testing, and production.

Applications .NET framework.NET Framework Applications

Les applications .NET framework, tels que les Windows Forms, WPF, Console et ASP.NET 4, ont un modèle de chaîne de connexion testée et..NET Framework applications, such as WinForms, WPF, Console, and ASP.NET 4, have a tried and tested connection string pattern. La chaîne de connexion doit être ajoutée à votre fichier App.config (Web.config si vous utilisez ASP.NET) des applications.The connection string should be added to your applications App.config file (Web.config if you are using ASP.NET). Si votre chaîne de connexion contient des informations sensibles, telles que le nom d’utilisateur et mot de passe, vous pouvez protéger le contenu du fichier de configuration en utilisant Configuration protégée.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>

Conseil

Le providerName paramètre n’est pas requis sur les chaînes de connexion EF Core stockées dans App.config, car le fournisseur de base de données est configuré via le code.The providerName setting is not required on EF Core connection strings stored in App.config because the database provider is configured via code.

Vous pouvez ensuite lire la chaîne de connexion à l’aide de la ConfigurationManager API dans le contexte de votre OnConfiguring (méthode).You can then read the connection string using the ConfigurationManager API in your context's OnConfiguring method. Vous devrez peut-être ajouter une référence à la System.Configuration assembly framework pour être en mesure d’utiliser cette 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);
    }
}

Plateforme Windows universelle (UWP)Universal Windows Platform (UWP)

Chaînes de connexion dans une application UWP sont en général, une connexion de SQLite qui spécifie uniquement un nom de fichier local.Connection strings in a UWP application are typically a SQLite connection that just specifies a local filename. Ils généralement ne contiennent pas d’informations sensibles et n’avez pas besoin de changer, car une application est déployée.They typically do not contain sensitive information, and do not need to be changed as an application is deployed. Par conséquent, ces chaînes de connexion conviennent généralement à conserver dans le code, comme indiqué ci-dessous.As such, these connection strings are usually fine to be left in code, as shown below. Si vous souhaitez les déplacer hors code puis UWP prend en charge le concept des paramètres, consultez le section de paramètres de l’application de la documentation de la plateforme Windows universelle pour plus d’informations.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");
    }
}

ASP.NET CoreASP.NET Core

Dans ASP.NET Core du système de configuration est très souple, et la chaîne de connexion peut être stockée dans appsettings.json, une variable d’environnement, le magasin des secrets utilisateur ou une autre source de configuration.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. Consultez le section de Configuration de la documentation d’ASP.NET Core pour plus d’informations.See the Configuration section of the ASP.NET Core documentation for more details. L’exemple suivant montre la chaîne de connexion stockée dans 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;"
  },
}

Le contexte est généralement configuré dans Startup.cs avec la chaîne de connexion en cours de lecture à partir de la configuration.The context is typically configured in Startup.cs with the connection string being read from configuration. Remarque la GetConnectionString() méthode recherche une valeur de configuration dont la clé est 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")));
}