含まれるもの: ホスティング統合、ただし
Client の統合は含まれません
手記
この統合は .NET.NET Aspire Community Toolkit の一部であり、 されていません。
この記事では、.NET Aspire SQL Database Projects ホスティング統合を使用して、データベース スキーマを SQL Server データベースに発行する方法について説明します。
前提 条件
この統合には、MSBuild.Sdk.SqlProj または Microsoft.Build.Sql のいずれかに基づく SQL Database プロジェクトが必要です。
ホスティング統合
.NET .NET Aspire SQL Database Projects ホスティング統合の使用を開始するには、📦 CommunityToolkit をインストールします。Aspire.Hosting.SqlDatabaseProjects アプリ ホスト プロジェクトの NuGet パッケージです。
dotnet add package CommunityToolkit.Aspire.Hosting.SqlDatabaseProjects
詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。
使用例
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 Serverに発行されている SQL Database プロジェクトが表示されます。
NuGet パッケージのサポート
バージョン 9.2.0 以降では、
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
の下にあります。 前の例では、tools/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 Server インスタンスに SQL Database プロジェクトを発行できます。
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 サーバー リソースを追加し、test
データベース リソースを追加します。 -
mysqlproj
という名前の SQL プロジェクト リソースを追加し、DacDeployOptionsを構成します。 - SQL プロジェクト リソースは、データベース リソースによって異なります。
再デプロイのサポート
アプリ ホストの実行中に SQL Database プロジェクトに変更を加えた場合は、Redeploy
.NET ダッシュボードで .NET Aspire カスタム アクションを使用して、アプリ ホストを再起動せずに更新プログラムを再デプロイできます。
関連項目
.NET Aspire