.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
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.
-
CLI de
- PackageReference
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 PackageReference
correspondiente, 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 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 datostest
. - 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.