Freigeben über


.NET .NET Aspire SQL-Datenbankprojekte, die integration hosten

umfasst:Hosting-Integration keine Client Integration

Anmerkung

Diese Integration ist Teil des .NET.NET Aspire Community Toolkit, und .NET Aspire 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.

Hostingintegration

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 PackageReferencefestzulegen, 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 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