интеграция размещения проектов баз данных SQL .NET.NET Aspire
Включает:интеграция размещения не Client интеграции
Заметка
Эта интеграция является частью набора средств сообщества
В этой статье вы узнаете, как использовать интеграцию .NET Aspire sql Database Projects для публикации схемы базы данных в базе данных SQL Server.
Необходимые условия
Для этой интеграции требуется проект базы данных SQL на основе MSBuild.Sdk.SqlProj или Microsoft.Build.Sql.
Интеграция хостинга
Чтобы приступить к работе с интеграцией .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 публикуется в указанном SQL Server.
Поддержка пакета NuGet
Начиная с версии 9.2.0, вы можете развернуть базы данных из указанных пакетов NuGet, таких как создаваемые с помощью 📦 MSBuild.Sdk.SqlProj или 📦 Microsoft.Build.Sql. Чтобы развернуть, добавьте пакет NuGet в хостовой проект приложения Aspire, например:
dotnet add package ErikEJ.Dacpac.Chinook
Затем измените файл проекта, чтобы изменить флаг с IsAspirePackageResource
на True
для соответствующего PackageReference
, как показано в следующем примере:
<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
. В предыдущем примере ожидается путь tools/ErikEJ.Dacpac.Chinook.dacpac. Если по какой-либо причине .dacpac расположен в другом пути в пакете, можно использовать API WithDacpac("relative/path/to/some.dacpac")
, чтобы указать путь относительно корня каталога проекта узла приложения.
Поддержка локальных файлов .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);
Поддержка вариантов развертывания
Чтобы определить параметры, влияющие на поведение развертывания пакета, вызовите 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();
Предыдущий код:
- Добавляет ресурс SQL Server с именем
sql
и добавляет в него ресурс базы данныхtest
. - Добавляет ресурс проекта SQL с именем
mysqlproj
, а затем настраивает DacDeployOptions. - Ресурс проекта SQL зависит от ресурса базы данных.
Поддержка повторного развертывания
При внесении изменений в проект базы данных SQL во время работы узла приложения можно использовать Redeploy
настраиваемое действие на панели мониторинга .NET.NET Aspire для повторного развертывания обновлений без необходимости перезапуска узла приложения.
См. также
.NET Aspire