Partilhar via


.NET .NET Aspire Integração de hospedagem de projetos de banco de dados SQL

Inclui:Integração de hospedagem não incluído Client integração

Observação

Essa integração faz parte do .NET.NET Aspire Community Toolkit e não é oficialmente suportada pela equipe .NET.NET Aspire.

Neste artigo, você aprenderá a usar a integração de hospedagem de Projetos de Banco de Dados SQL do .NET Aspire para publicar seu esquema de banco de dados em seu banco de dados SQL Server.

Pré-requisitos

Essa integração requer um projeto de banco de dados SQL baseado em MSBuild.Sdk.SqlProj ou Microsoft.Build.Sql.

Integração de hospedagem

Para começar a usar a integração de hospedagem do .NET.NET Aspire SQL Database Projects, instale o 📦 CommunityToolkit.Aspire. Hosting.SqlDatabaseProjects pacote NuGet no projeto host do aplicativo.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.

Exemplo de utilização

Adicione uma referência ao 📦 MSBuild.Sdk.SqlProj ou 📦 projeto de Microsoft.Build.Sql que você deseja publicar em seu projeto de host de aplicativo .NET.NET Aspire:

dotnet add reference ../MySqlProj/MySqlProj.csproj

Observação

A adição de esta referência resultará atualmente num aviso ASPIRE004 no projeto devido à forma como as referências são processadas. A equipa .NET.NET Aspire está ciente disso e estamos a trabalhar numa solução mais limpa.

Adicione o projeto como um recurso ao seu .NET.NET Aspire AppHost:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject<Projects.MySqlProj>("mysqlproj")
       .WithReference(sql);

Agora, ao executar o seu projeto de host da aplicação .NET Aspire, você verá o Projeto do Banco de Dados SQL sendo publicado no SQL Serverespecificado.

Suporte ao pacote NuGet

A partir da versão 9.2.0, você pode implantar bancos de dados a partir de pacotes NuGet referenciados, como os produzidos por 📦 MSBuild.Sdk.SqlProj ou 📦Microsoft.Build.Sql. Para implantar, adicione o pacote NuGet ao seu projeto de host de aplicativo Aspire, por exemplo:

dotnet add package ErikEJ.Dacpac.Chinook

Em seguida, edite o arquivo de projeto para definir o sinalizador IsAspirePackageResource como True para o PackageReferencecorrespondente, conforme mostrado no exemplo a seguir:

<PackageReference Include="ErikEJ.Dacpac.Chinook" Version="1.0.0"
                  IsAspirePackageResource="True" />

Por fim, adicione o pacote como um recurso ao seu modelo de aplicativo:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlPackage<Packages.ErikEJ_Dacpac_Chinook>("chinook")
       .WithReference(sql);

Observação

Por padrão, espera-se que o .dacpac esteja localizado em tools/<package-id>.dacpac. No exemplo anterior, o caminho tools/ErikEJ.Dacpac.Chinook.dacpac é o esperado. Se, por qualquer motivo, o .dacpac estiver sob um caminho diferente dentro do pacote, você poderá usar API para especificar um caminho relativo à raiz do diretório do projeto host do aplicativo.

Suporte ao arquivo .dacpac local

Se estiveres a fornecer o teu arquivo .dacpac de um local que não seja uma referência de projeto, também podes especificar o caminho para o arquivo .dacpac diretamente:

var builder = DistributedApplication.CreateBuilder(args);

var sql = builder.AddSqlServer("sql")
                 .AddDatabase("test");

builder.AddSqlProject("mysqlproj")
       .WithDacpac("path/to/mysqlproj.dacpac")
       .WithReference(sql);

Suporte a opções de implantação

Para definir opções que afetam o comportamento da implantação de pacotes, chame a 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();

O código anterior:

  • Adiciona um recurso do SQL Server chamado sql e adiciona um recurso de banco de dados test a ele.
  • Adiciona um recurso de projeto SQL chamado mysqlproj e, em seguida, configura o DacDeployOptions.
  • O recurso de projeto SQL depende do recurso de banco de dados.

Suporte de reimplantação

Se você fizer alterações em seu projeto do Banco de dados SQL enquanto o host do aplicativo estiver em execução, poderá usar a ação personalizada Redeploy no painel .NET.NET Aspire para reimplantar suas atualizações sem precisar reiniciar o host do aplicativo.

Ver também