.NET .NET Aspire hostingintegratie voor SQL-databaseprojecten
Omvat:Hostingintegratie niet Client integratie
Notitie
Deze integratie maakt deel uit van de
In dit artikel leert u hoe u de .NET Aspire SQL Database Projects-hostingintegratie gebruikt om uw databaseschema naar uw SQL Server-database te publiceren.
Voorwaarden
Voor deze integratie is een SQL Database-project vereist op basis van MSBuild.Sdk.SqlProj- of Microsoft.Build.Sql.
Hostingintegratie
Om te beginnen met de .NET.NET Aspire SQL Database Projects-hostingintegratie, installeer het 📦 CommunityToolkitAspire.Hosting.SqlDatabaseProjects NuGet-pakket in het app-hostproject.
dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects
Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.
Voorbeeld van gebruik
Voeg een verwijzing toe naar het 📦 MSBuild.Sdk.SqlProj- of 📦 Microsoft.Build.Sql project dat u wilt publiceren in uw .NET.NET Aspire app-hostproject:
dotnet add reference ../MySqlProj/MySqlProj.csproj
Notitie
Als u deze verwijzing toevoegt, resulteert dit momenteel in een waarschuwing ASPIRE004
in het project vanwege de wijze waarop verwijzingen worden geparseerd. Het .NET.NET Aspire team is hiervan op de hoogte en we werken aan een schonere oplossing.
Voeg het project toe als een resource aan uw .NET.NET Aspire AppHost:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
.WithReference(sql);
Wanneer u nu uw .NET Aspire-app-hostproject uitvoert, ziet u dat het SQL Database-project wordt gepubliceerd naar de opgegeven SQL Server.
Ondersteuning voor NuGet-pakketten
Vanaf versie 9.2.0 kunt u databases implementeren vanuit nuget-pakketten waarnaar wordt verwezen, zoals die worden geproduceerd door 📦 MSBuild.Sdk.SqlProj- of 📦 Microsoft.Build.Sql. Als u het NuGet-pakket wilt implementeren, voegt u het NuGet-pakket toe aan uw Aspire app-hostproject, bijvoorbeeld:
dotnet add package ErikEJ.Dacpac.Chinook
Bewerk vervolgens het projectbestand om de vlag IsAspirePackageResource
in te stellen op True
voor de bijbehorende PackageReference
, zoals wordt weergegeven in het volgende voorbeeld:
<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
IsAspirePackageResource="True" />
Voeg ten slotte het pakket toe als een resource aan uw app-model:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
.WithReference(sql);
Notitie
Standaard wordt verwacht dat de .dacpac- zich onder tools/<package-id>.dacpac
bevindt. In het voorgaande voorbeeld wordt het tools/ErikEJ.Dacpac.Chinook.dacpac pad verwacht. Als om welke reden dan ook de .dacpac- zich onder een ander pad binnen het pakket bevindt, kunt u WithDacpac("relative/path/to/some.dacpac")
API gebruiken om een pad op te geven ten opzichte van de hoofdmap van het app-hostproject.
Ondersteuning voor lokale .dacpac-bestanden
Als u uw .dacpac--bestand van een andere bron dan een projectreferentie haalt, kunt u ook het pad naar het .dacpac--bestand rechtstreeks opgeven.
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject("mysqlproj")
.WithDacpac("path/to/mysqlproj.dacpac")
.WithReference(sql);
Ondersteuning voor implementatieopties
Als u opties wilt definiëren die van invloed zijn op het gedrag van pakketimplementatie, roept u de WithConfigureDacDeployOptions
-API aan:
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();
De voorgaande code:
- Hiermee voegt u een SQL server-resource toe met de naam
sql
en voegt u er eentest
databaseresource aan toe. - Hiermee voegt u een SQL-projectresource met de naam
mysqlproj
toe en configureert u vervolgens de DacDeployOptions. - De SQL-projectresource is afhankelijk van de databaseresource.
Ondersteuning bij herimplementatie
Als u wijzigingen aanbrengt in uw SQL Database-project terwijl de app-host wordt uitgevoerd, kunt u de aangepaste Redeploy
actie op het .NET.NET Aspire-dashboard gebruiken om uw updates opnieuw te implementeren zonder de app-host opnieuw te hoeven starten.