Partage via


Chaînes de connexion

La plupart des fournisseurs de base de données nécessitent une forme de chaîne de connexion pour se connecter à la base de données. Parfois, cette chaîne de connexion contient des informations sensibles qui doivent être protégées. Vous devrez peut-être également modifier la chaîne de connexion lorsque vous déplacez votre application entre différents environnements, comme le développement, le test et la production.

ASP.NET Core

Dans ASP.NET Core, le système de configuration est très flexible et la chaîne de connexion peut être stockée dans appsettings.json, une variable d’environnement, le magasin de secrets utilisateur ou une autre source de configuration. Pour plus de détails, consultez la section configuration de la documentation ASP.NET Core.

Par exemple, vous pouvez utiliser l’outil Gestionnaire de secrets pour stocker le mot de passe de votre base de données, puis, dans la génération de modèles automatique, utiliser une chaîne de connexion qui se compose simplement de Name=<database-alias>.

dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

L’exemple suivant montre la chaîne de connexion stockée dans appsettings.json.

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

Ensuite, le contexte est généralement configuré dans Startup.cs, la chaîne de connexion étant lue depuis la configuration. Notez que la méthode GetConnectionString() recherche une valeur de configuration dont la clé est ConnectionStrings:<connection string name>. Vous devez importer l’espace de noms Microsoft.Extensions.Configuration pour utiliser cette méthode d’extension.

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

Applications WinForms et WPF

Les applications WinForms, WPF et ASP.NET 4 ont un modèle de chaîne de connexion essayé et testé. La chaîne de connexion doit être ajoutée au fichier App.config de votre application (Web.config si vous utilisez ASP.NET). Si votre chaîne de connexion contient des informations sensibles, comme un nom d’utilisateur et un mot de passe, vous pouvez protéger le contenu du fichier de configuration avec une Configuration protégée.

<?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 paramètre providerName n’est pas obligatoire sur les chaînes de connexion EF Core stockées dans App.config, car le fournisseur de base de données est configuré via du code.

Vous pouvez ensuite lire la chaîne de connexion avec l’API ConfigurationManager dans la méthode OnConfiguring de votre contexte. Vous devrez peut-être ajouter une référence au framework assembly System.Configuration pour pouvoir utiliser cette 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)

Les chaînes de connexion d’une application UWP sont généralement une connexion SQLite qui spécifie simplement un nom de fichier local. Elles ne contiennent généralement pas d’informations sensibles et n’ont pas besoin d’être modifiées quand une application est déployée. Par conséquent, ces chaînes de connexion peuvent généralement rester dans le code, comme indiqué ci-dessous. Si vous souhaitez les déplacer hors du code, alors UWP prend en charge le concept de paramètres. Consultez la section des paramètres d’application de la documentation UWP pour plus d’informations.

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