Freigeben über


.NET .NET Aspire Integration von SQL-Datenbankprojekten in das Hosting

Beinhaltet:Hosting-Integration enthalten Nur Hosting-Integration — Client Integration nicht enthaltenClient Integration nicht enthalten

Anmerkung

Diese Integration ist Teil des .NET.NET Aspire Community Toolkit, und unterstützt.

In diesem Artikel erfahren Sie, wie Sie die .NET Aspire SQL-Datenbankprojekte, die die Integration hosten, verwenden, um Ihr Datenbankschema in Ihrer SQL Server-Datenbank zu veröffentlichen.

Voraussetzungen

Für diese Integration ist ein SQL-Datenbankprojekt erforderlich, das auf MSBuild.Sdk.SqlProj oder Microsoft.Build.Sql-basiert.

Hosting-Integration

Um mit der Integration von .NET.NET Aspire SQL-Datenbankprojekten zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects NuGet-Paket im App-Hostprojekt.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Weitere Informationen finden Sie unter dotnet add package oder Verwalten Sie Paketabhängigkeiten in .NET-Anwendungen.

Beispielverwendung

Fügen Sie einen Verweis auf das 📦 MSBuild.Sdk.SqlProj oder 📦 Microsoft.Build.Sql Projekt hinzu, das Sie in Ihrem .NET.NET Aspire App-Hostprojekt veröffentlichen möchten:

dotnet add reference ../MySqlProj/MySqlProj.csproj

Anmerkung

Das Hinzufügen dieses Verweises führt derzeit zu einer Warnung ASPIRE004 im Projekt aufgrund der Art und Weise, wie Verweise verarbeitet werden. Das .NET.NET Aspire Team ist sich dessen bewusst und wir arbeiten an einer saubereren Lösung.

Fügen Sie das Projekt als Ressource zu Ihrem .NET.NET Aspire AppHost hinzu:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Wenn Sie Ihr .NET Aspire App-Hostprojekt ausführen, sehen Sie, dass das SQL-Datenbankprojekt in der angegebenen SQL Serververöffentlicht wird.

NuGet-Paketunterstützung

Ab Version 9.2.0 können Sie Datenbanken aus referenzierten NuGet-Paketen bereitstellen, z. B. von 📦 MSBuild.Sdk.SqlProj oder 📦 Microsoft.Build.Sql. Fügen Sie zum Bereitstellen das NuGet-Paket zu Ihrem Aspire App-Hostprojekt hinzu, z. B.:

dotnet add package ErikEJ.Dacpac.Chinook

Bearbeiten Sie als Nächstes die Projektdatei, um das IsAspirePackageResource-Flag auf True für die entsprechende PackageReference anzupassen, wie im folgenden Beispiel gezeigt:

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

Fügen Sie schließlich das Paket als Ressource zu Ihrem App-Modell hinzu:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Anmerkung

Standardmäßig wird erwartet, dass die Datei .dacpac sich unter tools/<package-id>.dacpacbefindet. Im vorherigen Beispiel wird der Pfad tools/ErikEJ.Dacpac.Chinook.dacpac erwartet. Wenn der .dacpac aus irgendeinem Grund unter einem anderen Pfad innerhalb des Pakets liegt, können Sie WithDacpac("relative/path/to/some.dacpac")-API verwenden, um einen Pfad relativ zum Stammverzeichnis des App-Hostprojekts anzugeben.

Unterstützung lokaler .dacpac-Dateien

Wenn Sie Ihre .dacpac Datei von einer anderen Stelle als einem Projektverweis beziehen, können Sie auch den Pfad zur .dacpac Datei direkt angeben:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Unterstützung für vorhandene SQL Server-Instanzen

Ab Version 9.2.0 können Sie das SQL-Datenbankprojekt mithilfe einer Verbindungszeichenfolge in einer vorhandenen SQL Server Instanz veröffentlichen:

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();

Unterstützung für Bereitstellungsoptionen

Rufen Sie die WithConfigureDacDeployOptions-API auf, um Optionen zu definieren, die sich auf das Verhalten der Paketbereitstellung auswirken:

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();

Der vorhergehende Code:

  • Fügt eine SQL Server-Ressource namens sql hinzu und fügt ihr eine test Datenbankressource hinzu.
  • Fügt eine SQL-Projektressource namens mysqlproj hinzu und konfiguriert dann die DacDeployOptions.
  • Die SQL-Projektressource hängt von der Datenbankressource ab.

Erneute Bereitstellungsunterstützung

Wenn Sie Änderungen an Ihrem SQL-Datenbankprojekt vornehmen, während der App-Host ausgeführt wird, können Sie die benutzerdefinierte Aktion Redeploy verwenden, um alle Ihre Updates im Dashboard .NET.NET Aspire erneut bereitzustellen, ohne den App-Host neu starten zu müssen.

Siehe auch