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.
  • Vous devrez peut-être changer lorsque l’application passe à différents environnements, tels que le développement, le test 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 ou appsettings.json le appsettings.Development.json fichier.
  • 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 et de l’utilisation du gestionnaire de secrets, un 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 structure, utilisez une chaîne de connexion qui se compose 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é avec Program.cs la chaîne de connexion en cours de lecture à 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 de votre application ou Web.config lors de App.config l’utilisation de 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");
    }
}