다음을 통해 공유


SQL Database 프로젝트 호스팅 통합 .NET.NET Aspire

포함: 호스팅 통합, 통합 아님 Client

메모

이 통합은 .NET.NET Aspire 커뮤니티 도구 키트 일부이며 지원하지 않습니다.

이 문서에서는 호스팅된 통합 기능을 갖춘 .NET Aspire SQL Database Projects를 사용하여 데이터베이스 스키마를 SQL Server 데이터베이스에 게시하는 방법을 알아봅니다.

필수 구성 요소

이 통합을 위해서는 MSBuild.Sdk.SqlProj 또는 Microsoft.Build.Sql기반으로 하는 SQL Database 프로젝트가 필요합니다.

호스팅 통합

통합을 시작하려면 .NET.NET Aspire SQL Database 프로젝트 호스팅과 함께 앱 호스트 프로젝트에 📦 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 Database 프로젝트가 지정된 SQL Server에 게시되는 모습을 볼 수 있습니다.

NuGet 패키지 지원

ko-KR: 버전 9.2.0부터는 📦 MSBuild.Sdk.SqlProj 또는 📦 Microsoft.Build.Sql에 의해 생성된 참조된 NuGet 패키지에서 데이터베이스를 배포할 수 있습니다. 배포하려면 Aspire 앱 호스트 프로젝트에 NuGet 패키지를 추가합니다. 예를 들면 다음과 같습니다.

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);

메모

기본적으로 .dacpactools/<package-id>.dacpac아래에 위치해 있어야 합니다. 앞의 예제에서는 도구/ErikEJ.Dacpac.Chinook.dacpac 경로가 예상됩니다. 어떤 이유로든 .dacpac 패키지 내의 다른 경로 아래에 있는 경우 WithDacpac("relative/path/to/some.dacpac") API를 사용하여 앱 호스트 프로젝트 디렉터리의 루트에 상대적인 경로를 지정할 수 있습니다.

로컬 .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);

기존 SQL Server 인스턴스에 대한 지원

버전 9.2.0부터 연결 문자열을 사용하여 SQL Database 프로젝트를 기존 SQL Server 인스턴스에 게시할 수 있습니다.

var builder = DistributedApplication.CreateBuilder(args);

// Get an existing SQL Server connection string from the configuration
var connection = builder.AddConnectionString("Aspire");

builder.AddSqlProject<Projects.SdkProject>("mysqlproj")
       .WithReference(connection);

builder.Build().Run();

배포 옵션 지원

패키지 배포의 동작에 영향을 주는 옵션을 정의하려면 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 Database 프로젝트를 변경하는 경우 Redeploy.NET 대시보드에서 .NET Aspire 사용자 지정 작업을 사용하여 앱 호스트를 다시 시작하지 않고도 업데이트를 다시 배포할 수 있습니다.

참고 항목