Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Inkluderar: Värdintegrering ingår Endast värdintegrering –  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 sqloch lägger till entestdatabasresurs i den.
- Lägger till en SQL-projektresurs med namnet mysqlprojoch 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.