Partager via


.NET .NET Aspire intégration de l'hébergement des projets de base de données SQL

Inclut : intégration d’hébergement, pas d’intégration Client

Remarque

Cette intégration fait partie du community Toolkit et n’est pas officiellement prise en charge par l’équipe .

Dans cet article, vous allez apprendre à utiliser l’intégration d’hébergement .NET Aspire projets SQL Database pour publier votre schéma de base de données dans votre base de données SQL Server.

Conditions préalables

Cette intégration nécessite un projet SQL Database basé sur MSBuild.Sdk.SqlProj ou Microsoft.Build.Sql.

Intégration de l’hébergement

Pour commencer à utiliser l'intégration d'hébergement des projets de bases de données SQL .NET.NET Aspire, installez le package NuGet 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects dans le projet hôte de l'application.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de packages dans les applications .NET.

Exemple d’utilisation

Ajoutez une référence au projet 📦 MSBuild.Sdk.SqlProj ou 📦 projet Microsoft.Build.Sql que vous souhaitez publier dans votre projet hôte d’application .NET.NET Aspire :

dotnet add reference ../MySqlProj/MySqlProj.csproj

Remarque

L’ajout de cette référence entraîne actuellement l’avertissement ASPIRE004 sur le projet en raison de la façon dont les références sont analysées. L’équipe .NET.NET Aspire est consciente de cela et nous travaillons à une solution plus propre.

Ajoutez le projet en tant que ressource à votre .NET.NET Aspire AppHost :

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
       .WithReference(sql);

À présent, lorsque vous exécutez votre projet hôte d’application .NET Aspire, vous voyez le projet de base de données SQL publié vers la SQL Serverspécifiée.

Prise en charge des packages NuGet

À compter de la version 9.2.0, vous pouvez déployer des bases de données à partir de packages NuGet référencés, tels que ceux produits par 📦 MSBuild.Sdk.SqlProj ou 📦 Microsoft.Build.Sql. Pour déployer, ajoutez le package NuGet à votre projet hôte d’application Aspire, par exemple :

dotnet add package ErikEJ.Dacpac.Chinook

Ensuite, modifiez votre fichier projet pour définir l’indicateur de IsAspirePackageResource sur True pour le PackageReferencecorrespondant, comme illustré dans l’exemple suivant :

<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
                  IsAspirePackageResource="True" />

Enfin, ajoutez le package en tant que ressource à votre modèle d’application :

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
       .WithReference(sql);

Remarque

Par défaut, le .dacpac est censé se trouver sous tools/<package-id>.dacpac. Dans l’exemple précédent, le chemin d’accès /ErikEJ.Dacpac.Chinook.dacpac est attendu. Si, pour une raison quelconque, le .dacpac se trouve sous un chemin différent dans le package, vous pouvez utiliser WithDacpac("relative/path/to/some.dacpac") API pour spécifier un chemin d’accès par rapport à la racine du répertoire du projet hôte d’application.

Prise en charge des fichiers .dacpac locaux

Si vous approvisionnez votre fichier .dacpac à partir d’un autre emplacement qu’une référence de projet, vous pouvez également spécifier le chemin d’accès au fichier .dacpac directement :

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject("mysqlproj")
       .WithDacpac("path/to/mysqlproj.dacpac")
       .WithReference(sql);

Prise en charge des instances de SQL Server existantes

À compter de la version 9.2.0, vous pouvez publier le projet SQL Database sur une instance SQL Server existante à l’aide d’une chaîne de connexion :

var builder = DistributedApplication.CreateBuilder(args);

// Get an existing SQL Server connection string from the configuration
var connection = builder.AddConnectionString("Aspire");

builder.AddSqlProject<Projects.SdkProject>("mysqlproj")
       .WithReference(connection);

builder.Build().Run();

Prise en charge des options de déploiement

Pour définir des options qui affectent le comportement du déploiement de package, appelez l’API WithConfigureDacDeployOptions :

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject("mysqlproj")
       .WithConfigureDacDeployOptions(options => options.IncludeCompositeObjects = true)
       .WithReference(sql);

builder.Build().Run();

Code précédent :

  • Ajoute une ressource SQL Server nommée sql et ajoute une ressource de base de données test à celle-ci.
  • Ajoute une ressource de projet SQL nommée mysqlproj, puis configure l'DacDeployOptions.
  • La ressource de projet SQL dépend de la ressource de base de données.

Soutien au redéploiement

Si vous apportez des modifications à votre projet SQL Database pendant l’exécution de l’hôte de l’application, vous pouvez utiliser l’action Redeploy personnalisée sur le tableau de bord .NET.NET Aspire pour redéployer vos mises à jour sans avoir à redémarrer l’hôte de l’application.

Voir aussi