SQL Database 프로젝트 호스팅 통합 .NET.NET Aspire
포함: 호스팅 통합, 통합 아님
Client
메모
이 통합은 .NET.NET Aspire 커뮤니티 도구 키트 일부이며 지원하지 않습니다.
이 문서에서는 호스팅된 통합 기능을 갖춘 .NET Aspire SQL Database Projects를 사용하여 데이터베이스 스키마를 SQL Server 데이터베이스에 게시하는 방법을 알아봅니다.
필수 구성 요소
이 통합을 위해서는
호스팅 통합
통합을 시작하려면 .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);
메모
기본적으로 .dacpac는 tools/<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 사용자 지정 작업을 사용하여 앱 호스트를 다시 시작하지 않고도 업데이트를 다시 배포할 수 있습니다.
참고 항목
.NET Aspire