Dela via


.NET .NET Aspire Integration för värdhantering av SQL Database Projects

Omfattar:Hostingintegration inte Client Hostingintegration

Not

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

I den här artikeln får du lära dig hur du använder värdintegration med .NET 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 .NET.NET Aspire SQL Database Projects värdintegration genom att installera 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects NuGet-paketet i applikationsvärdprojektet.

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 📦 MSBuild.Sdk.SqlProj eller 📦 Microsoft.Build.Sql projekt som du vill publicera i ditt .NET.NET Aspire appvärdprojekt:

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. .NET .NET Aspire-teamet är medvetna om detta och vi arbetar med en renare lösning.

Lägg till projektet som en resurs i din .NET.NET 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 .NET Aspire värdapp-projekt ser du att SQL Database-projektet publiceras till den specificerade 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 appvärdprojekt, 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 för att ange en sökväg relativ till roten för värdkatalogen för projektet.

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 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 appvärden körs kan du använda den Redeploy anpassade åtgärden på .NET.NET Aspire instrumentpanelen för att distribuera om uppdateringarna utan att behöva starta om appvärden.

Se även