.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 entest
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
.NET Aspire