.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 PackageReference
festzulegen, 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>.dacpac
befindet. 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 einetest
-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.