.NET .NET Aspire SQL Database 專案託管整合
註解
這項整合是 .NET.NET Aspire 社群工具組 的一部分, 不受 .NET.NET Aspire 小組正式支援。
在本文中,您將瞭解如何使用 SQL Database 專案中的 .NET Aspire 托管整合功能,將資料庫架構發佈至 SQL Server 資料庫。
先決條件
此整合需要一個基於 MSBuild.Sdk.SqlProj 或 Microsoft.Build.Sql的 SQL Database 專案。
主機整合
若要開始使用裝載整合 .NET.NET Aspire SQL Database Projects,請安裝 📦 CommunityToolkit。Aspire。Hosting.SqlDatabaseProjects 應用程式主專案中的 NuGet 套件。
dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects
如需詳細資訊,請參閱 dotnet add package 或 管理 .NET 應用程式中的套件相依性。
範例使用方式
新增 📦 MSBuild.Sdk.SqlProj 或 📦 Microsoft.Build.Sql 項目的參考,以在 .NET.NET Aspire 應用程式主專案中發佈:
dotnet add reference ../MySqlProj/MySqlProj.csproj
註解
新增此參考目前會導致專案出現警告 ASPIRE004
,因為參考的解析方式。
.NET
.NET Aspire 團隊知道這一點,我們正在尋求更完善的解決方案。
將專案新增為資源至 .NET.NET Aspire AppHost:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
.WithReference(sql);
現在當您執行 .NET Aspire 應用程式主專案時,您會看到 SQL Database 項目發行至指定的 SQL Server。
NuGet 套件支援
從 9.2.0 版開始,您可以從參考的 NuGet 套件部署資料庫,例如 MSBuild.Sdk.SqlProj 或
dotnet add package ErikEJ.Dacpac.Chinook
接下來,編輯您的項目檔,將對應 PackageReference
的 IsAspirePackageResource
旗標設定為 True
,如下列範例所示:
<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
IsAspirePackageResource="True" />
最後,將套件新增為資源至您的應用程式模型:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
.WithReference(sql);
註解
根據預設,.dacpac 應該位於 tools/<package-id>.dacpac
之下。 在上述範例中,預期的路徑是 工具/ErikEJ.Dacpac.Chinook.dacpac。 如果因為任何原因,.dacpac 位於套件內的不同路徑下,您可以使用 WithDacpac("relative/path/to/some.dacpac")
API 來指定相對於應用程式主機項目目錄根目錄的路徑。
本機 .dacpac 檔案支援
如果您要從非項目參考的其他位置取得 .dacpac 檔案,您也可以直接指定 .dacpac 檔案的路徑:
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("test");
builder.AddSqlProject("mysqlproj")
.WithDacpac("path/to/mysqlproj.dacpac")
.WithReference(sql);
部署選項支援
若要定義影響封裝部署行為的選項,請呼叫 WithConfigureDacDeployOptions
API:
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();
上述程式代碼:
- 新增名為 server 的 SQL
sql
資源,並將test
資料庫資源加入其中。 - 新增名為
mysqlproj
的 SQL 專案資源,然後設定 DacDeployOptions。 - SQL 專案資源取決於資料庫資源。
重新部署支援
如果您在應用程式主機執行時變更 SQL Database 專案,您可以使用 Redeploy
.NET 儀錶板上的 .NET Aspire 自定義動作來重新部署更新,而不需要重新啟動應用程式主機。