Dela via


Aspire SQL Database Projects som är värd för integrering

Inkluderar: Värdintegrering ingår Endast värdintegrering – Hosting integration included integration not included integrering ingår inte

Not

Den här integreringen Aspire är en del av Community Toolkit och stöds inte officiellt av Aspire teamet.

I den här artikeln får du lära dig hur du använder värdintegration med Aspire SQL Database Projects för att publicera ditt databasschema till din SQL Server databas.

Förutsättningar

Den här integreringen kräver ett SQL Database-projekt baserat på antingen MSBuild.Sdk.SqlProj eller Microsoft.Build.Sql.

Värdintegrering

Kom igång med Aspire SQL Database Projects hosting integration genom att installera 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects NuGet-paketet i AppHost-projektet.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Mer information finns i dotnet add package eller Hantera paketberoenden i .NET-applikationer.

Exempel på användning

Lägg till en referens till projektet 📦 MSBuild.Sdk.SqlProj eller 📦 Microsoft.Build.Sql som du vill publicera i ditt Aspire AppHost-projekt:

dotnet add reference ../MySqlProj/MySqlProj.csproj

Not

Om du lägger till den här referensen visas för närvarande varning ASPIRE004 i projektet på grund av hur referenser parsas. Teamet Aspire är medvetna om detta och vi arbetar med en renare lösning.

Lägg till projektet som en resurs i din Aspire AppHost:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Nu när du kör ditt Aspire AppHost-projekt ser du att SQL Database-projektet publiceras till den angivna SQL Server.

Stöd för NuGet-paket

Från och med version 9.2.0 kan du distribuera databaser från refererade NuGet-paket, till exempel de som skapats av 📦 MSBuild.Sdk.SqlProj eller 📦 Microsoft.Build.Sql. Om du vill distribuera lägger du till NuGet-paketet i ditt Aspire AppHost-projekt, till exempel:

dotnet add package ErikEJ.Dacpac.Chinook

Redigera sedan projektfilen för att ange flaggan IsAspirePackageResource till True för motsvarande PackageReference, enligt följande exempel:

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

Lägg slutligen till paketet som en resurs i din appmodell:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Not

Som standard förväntas .dacpac finnas under tools/<package-id>.dacpac. I föregående exempel förväntas tools/ErikEJ.Dacpac.Chinook.dacpac sökväg. Om .dacpac av någon anledning finns under en annan sökväg i paketet kan du använda WithDacpac("relative/path/to/some.dacpac") API:et för att ange en sökväg i förhållande till roten i AppHost-projektkatalogen.

Stöd för lokal .dacpac-fil

Om du hämtar din .dacpac- fil från en annan plats än en projektreferens, kan du också ange sökvägen till filen .dacpac direkt:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Stöd för befintliga SQL Server-instanser

Från och med version 9.2.0 kan du publicera SQL Database-projektet till en befintlig SQL Server instans med hjälp av en anslutningssträng:

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

Stöd för distributionsalternativ

Om du vill definiera alternativ som påverkar beteendet för paketdistribution anropar du WithConfigureDacDeployOptions-API:et:

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

Föregående kod:

  • Lägger till en SQL-serverresurs med namnet sql och lägger till en test databasresurs i den.
  • Lägger till en SQL-projektresurs med namnet mysqlproj och konfigurerar sedan DacDeployOptions.
  • SQL-projektresursen är beroende av databasresursen.

Omdistribuera stöd

Om du gör ändringar i SQL Database-projektet medan AppHost körs kan du använda den Redeploy anpassade åtgärden på Aspire instrumentpanelen för att distribuera om uppdateringarna utan att behöva starta om AppHost.

Se även