Delen via


.NET .NET Aspire hostingintegratie voor SQL-databaseprojecten

Omvat:Hostingintegratie niet Client integratie

Notitie

Deze integratie maakt deel uit van de Community Toolkit en wordt niet officieel ondersteund door het team.

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>.dacpacbevindt. 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 een test 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.

Zie ook