.NET .NET Aspire SQL 数据库项目托管集成

包括:托管集成Client 集成

注意

此集成是 .NET.NET Aspire 社区工具包 的一部分, 不受 .NET.NET Aspire 团队正式支持。

本文介绍如何使用托管集成的 .NET Aspire SQL 数据库项目将数据库架构发布到 SQL Server 数据库。

先决条件

此集成需要基于 MSBuild.Sdk.SqlProjMicrosoft.Build.Sql的 SQL 数据库项目。

托管集成

若要开始使用 .NET.NET Aspire SQL 数据库项目托管集成,请在应用主机项目中安装 📦 CommunityToolkitAspireHosting.SqlDatabaseProjects NuGet 包。

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

有关详细信息,请参阅 dotnet add packageManage 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 自定义操作重新部署更新,而无需重启应用主机。

另请参阅