Compartir a través de


.NET .NET Aspire Integración de alojamiento de proyectos de SQL Database

Incluye:integración de hospedaje no Client

Nota

Esta integración forma parte del Community Toolkit y no es compatible oficialmente con el equipo de .

En este artículo, aprenderá a usar la integración de hospedaje de proyectos de SQL Database de .NET Aspire para publicar el esquema de base de datos en la base de datos de SQL Server.

Prerrequisitos

Esta integración requiere un proyecto de base de datos SQL basado en MSBuild.Sdk.SqlProj o en Microsoft.Build.Sql .

Integración de hospedaje

Para empezar a trabajar con la integración de hospedaje para proyectos de bases de datos SQL de .NET.NET Aspire, instale el paquete 📦 CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects de NuGet en el proyecto host de la aplicación.

dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects

Para obtener más información, consulte dotnet add package o Administrar las dependencias del paquete en aplicaciones de .NET.

Uso de ejemplo

Agregue una referencia al 📦 MSBuild.Sdk.SqlProj o 📦 Microsoft.Build.Sql del proyecto que quiera publicar en su proyecto host de aplicación .NET.NET Aspire.

dotnet add reference ../MySqlProj/MySqlProj.csproj

Nota

Al agregar esta referencia, se producirá una advertencia ASPIRE004 en el proyecto debido a cómo se analizan las referencias. El equipo de .NET.NET Aspire es consciente de esto y estamos trabajando en una solución más limpia.

Agregue el proyecto como un recurso al .NET.NET Aspire AppHost:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Ahora, al ejecutar el proyecto host de la aplicación .NET Aspire, verá que se está publicando el proyecto de base de datos SQL en el SQL Serverespecificado.

Compatibilidad con paquetes NuGet

A partir de la versión 9.2.0, puede implementar bases de datos a partir de paquetes NuGet a los que se hace referencia, como los generados por 📦 MSBuild.Sdk.SqlProj o 📦 Microsoft.Build.Sql. Para realizar la implementación, agregue el paquete NuGet al proyecto host de la aplicación Aspire, por ejemplo:

dotnet add package ErikEJ.Dacpac.Chinook

A continuación, edite el archivo de proyecto para establecer la marca de IsAspirePackageResource en True para el PackageReferencecorrespondiente, como se muestra en el ejemplo siguiente:

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

Por último, agregue el paquete como un recurso al modelo de aplicación:

var builder = DistributedApplication.CreateBuilder(args);

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

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

Nota

De forma predeterminada, se espera que el .dacpac de se encuentre en . En el ejemplo anterior, se espera la ruta tools/ErikEJ.Dacpac.Chinook.dacpac. Si por cualquier motivo el .dacpac se encuentra en una ruta de acceso diferente dentro del paquete, puede usar WithDacpac("relative/path/to/some.dacpac") API para especificar una ruta de acceso relativa a la raíz del directorio del proyecto host de la aplicación.

Compatibilidad con archivos .dacpac locales

Si se está aprovisionando del archivo .dacpac de .dacpac desde algún lugar distinto de una referencia de proyecto, también puede especificar directamente la ruta de acceso al archivo .dacpac de :

var builder = DistributedApplication.CreateBuilder(args);

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

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

Soporte para opciones de implementación

Para definir opciones que afectan al comportamiento de la implementación de paquetes, llame a la API de 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();

El código anterior:

  • Agrega un recurso de SQL server denominado sql y le agrega un recurso de base de datos test.
  • Agrega un recurso de proyecto de SQL denominado mysqlproj y, a continuación, configura el DacDeployOptions.
  • El recurso del proyecto SQL depende del recurso de base de datos.

Volver a implementar el soporte

Si realiza cambios en el proyecto de SQL Database mientras se ejecuta el host de la aplicación, puede usar la acción personalizada Redeploy en el panel de .NET.NET Aspire para volver a implementar las actualizaciones sin tener que reiniciar el host de la aplicación.

Consulte también