.NET .NET Aspire SQL 数据库项目托管集成
注意
此集成是 .NET.NET Aspire 社区工具包 的一部分, 不受 .NET.NET Aspire 团队正式支持。
本文介绍如何使用托管集成的 .NET Aspire SQL 数据库项目将数据库架构发布到 SQL Server 数据库。
先决条件
此集成需要基于 MSBuild.Sdk.SqlProj 或 Microsoft.Build.Sql的 SQL 数据库项目。
托管集成
若要开始使用 .NET.NET Aspire SQL 数据库项目托管集成,请在应用主机项目中安装 📦 CommunityToolkitAspireHosting.SqlDatabaseProjects NuGet 包。
dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects
有关详细信息,请参阅 dotnet add package 或 Manage Package Dependencies in .NET Applications。
示例用法
在 .NET.NET Aspire 应用主机项目中,添加对您要发布的 📦 MSBuild.Sdk.SqlProj 或 📦 Microsoft.Build.Sql 项目的引用:
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 数据库项目已发布到指定的 SQL Server。
本地 .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();
前面的代码:
- 添加名为
sql
的 SQL server 资源,并向其中添加test
数据库资源。 - 添加名为
mysqlproj
的 SQL 项目资源,然后配置 DacDeployOptions。 - SQL 项目资源取决于数据库资源。
重新部署支持
如果在应用主机运行时对 SQL 数据库项目进行更改,则可以在 .NET.NET Aspire 仪表板上使用 Redeploy
自定义操作重新部署更新,而无需重启应用主机。