.NET .NET Aspire Hostování integrace projektů SQL databáze
zahrnuje:integrace hostování ne Client integrace
Poznámka
Tato integrace je součástí sady
V tomto článku se dozvíte, jak pomocí integrace hostujících projektů .NET Aspire SQL Database publikovat schéma vaší databáze do databáze SQL Server.
Požadavky
Tato integrace vyžaduje projekt sql Database založený na MSBuild.Sdk.SqlProj nebo Microsoft.Build.Sql.
Integrace hostování
Chcete-li začít s integrací hostování SQL Database projektů .NET.NET Aspire, nainstalujte 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects NuGet balíček v projektu hostování aplikace.
dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects
Další informace naleznete v tématu dotnet add package nebo Správa závislostí balíčků v aplikacích .NET.
Příklad využití
Přidejte odkaz na 📦 MSBuild.Sdk.SqlProj nebo 📦 projektu Microsoft.Build.Sql, který chcete publikovat v hostitelském projektu aplikace .NET.NET Aspire:
dotnet add reference ../MySqlProj/MySqlProj.csproj
Poznámka
Přidání tohoto odkazu v současné době způsobí, že se v projektu zobrazí upozornění ASPIRE004
kvůli tomu, jak se odkazy analyzují. Tým .NET.NET Aspire o tom ví a pracujeme na čistějším řešení.
Přidejte projekt jako prostředek do aplikace .NET.NET Aspire AppHost.
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
.WithReference(sql);
Když teď spustíte projekt hostitele aplikace .NET Aspire, uvidíte, že se projekt služby SQL Database publikuje do zadaného SQL Server.
Podpora balíčků NuGet
Počínaje verzí 9.2.0 můžete nasazovat databáze z odkazovaných balíčků NuGet, jako jsou například databáze vytvořené 📦 MSBuild.Sdk.SqlProj nebo 📦 Microsoft.Build.Sql. Chcete-li nasadit balíček NuGet, přidejte jej do hostitelského projektu aplikace Aspire, například:
dotnet add package ErikEJ.Dacpac.Chinook
Dále upravte soubor projektu a nastavte příznak IsAspirePackageResource
na True
pro odpovídající PackageReference
, jak je znázorněno v následujícím příkladu:
<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
IsAspirePackageResource="True" />
Nakonec do modelu aplikace přidejte balíček jako prostředek:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
.WithReference(sql);
Poznámka
Ve výchozím nastavení se očekává, že .dacpac bude umístěn pod tools/<package-id>.dacpac
. V předchozím příkladu se očekává cesta tools/ErikEJ.Dacpac.Chinook.dacpac. Pokud je .dacpac z jakéhokoli důvodu pod jinou cestou v rámci balíčku, můžete použít rozhraní API WithDacpac("relative/path/to/some.dacpac")
k určení cesty vzhledem ke kořenovému adresáři hostitelského projektu aplikace.
Podpora místních souborů .dacpac
Pokud získáváte svůj soubor .dacpac odjinud než z odkazu na projekt, můžete také přímo zadat cestu k souboru .dacpac:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject("mysqlproj")
.WithDacpac("path/to/mysqlproj.dacpac")
.WithReference(sql);
Podpora možností nasazení
Pokud chcete definovat možnosti, které ovlivňují chování nasazení balíčku, zavolejte rozhraní API WithConfigureDacDeployOptions
:
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();
Předchozí kód:
- Přidá prostředek SQL serveru s názvem
sql
a k němu přidá prostředek databázetest
. - Přidá zdroj projektu SQL s názvem
mysqlproj
a nakonfiguruje DacDeployOptions. - Zdroj projektu SQL závisí na databázovém zdroji.
Opětovné nasazení podpory
Pokud v projektu SQL Database provedete změny, zatímco aplikace host běží, můžete na řídicím panelu Redeploy
.NET použít vlastní akci .NET Aspire pro opětovné nasazení aktualizací, aniž byste museli restartovat aplikaci host.