Partager via


Chaînes de connexion

La plupart des fournisseurs de base de données nécessitent une chaîne de connexion pour se connecter à la base de données. La chaîne de connexion :

  • Peut contenir des informations sensibles qui doivent être protégées.
  • Il peut être nécessaire de modifier lorsque l'application passe par différentes phases, comme le développement, les tests et la production.

Pour plus d’informations, consultez Flux d’authentification sécurisés

ASP.NET Core

La configuration ASP.NET Core peut stocker des chaîne de connexion avec différents fournisseurs :

  • Dans le fichier appsettings.Development.json ou appsettings.json.
  • Dans une variable d’environnement
  • Utilisation d’Azure Key Vault
  • Utilisation de l’outil Gestionnaire de secrets

Avertissement

Les secrets ne doivent jamais être ajoutés aux fichiers de configuration.

Par exemple, l’outil Gestionnaire de secrets peut stocker le mot de passe de la base de données. Lors de la génération automatique de modèles et de l’utilisation du gestionnaire de secrets, une chaîne de connexion se compose de Name=<database-alias>.

Pour plus d’informations, consultez la section Configuration de la documentation ASP.NET Core.

dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"

Ensuite, dans la génération automatique de modèles, utilisez une chaîne de connexion se constituant de Name=<database-alias>.

dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Avertissement

Cet article utilise une base de données locale qui ne nécessite pas l’authentification des utilisateurs. Les applications de production doivent utiliser le flux d’authentification le plus sécurisé disponible. Pour plus d’informations sur l’authentification pour les applications de test et de production déployées, consultez Flux d’authentification sécurisés.

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

Le contexte est généralement configuré dans Program.cs, la chaîne de connexion étant lue à partir de la configuration. Notez que la méthode GetConnectionString recherche une valeur de configuration dont la clé est ConnectionStrings:<connection string name>. GetConnectionString nécessite l'espace de noms 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));

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, ou au fichier Web.config lors de l'utilisation d'ASP.NET. La chaîne de connexion contenant des informations sensibles, telles que le nom d’utilisateur et le mot de passe, doit protéger le contenu du fichier de configuration à l’aide de la 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. Ils ne contiennent généralement pas d’informations sensibles et n’ont pas besoin d’être modifiés à mesure qu’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");
    }
}