次の方法で共有


.NET .NET Aspire コミュニティツールキットのSQLite統合

含まれるもの: ホスティング統合と Client 統合

手記

この統合は .NET.NET Aspire Community Toolkit の一部であり、は .NET.NET Aspire チームによって正式にサポート されていません。

SQLite は、アプリケーションのローカル データ ストレージに広く使用されている、軽量でサーバーレスの自己完結型 SQL データベース エンジンです。 .NET Aspire SQLite 統合により、.NET Aspire アプリケーション内で SQLite データベースを使用し、Microsoft.Data.Sqlite クライアント経由でアクセスできます。

ホスティング統合

SQLite ホスティング統合は、SQLite データベースを SQLiteResource 型としてモデル化し、指定した場所にデータベース ファイルを作成します。 📦 CommunityToolkit およびAspire.Hosting.SQLite NuGet パッケージを アプリ ホスト プロジェクトに追加するためのこれらの型と API にアクセスします。

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

詳細については、「dotnet パッケージ の追加」または「.NET アプリケーションでのパッケージの依存関係の管理」を参照してください。

SQLite リソースの追加

アプリ ホスト プロジェクトで、AddSQLite 拡張メソッドを使用して SQLite 統合を登録して使用し、SQLite データベースをアプリケーション ビルダーに追加します。

var builder = DistributedApplication.CreateBuilder(args);

var sqlite = builder.AddSQLite("my-database");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(sqlite);

前 .NET.NET Aspire 例に示すように、SQLite データベースをアプリ ホストに追加すると、ユーザーの一時ディレクトリに新しい SQLite データベース ファイルが作成されます。

または、SQLite データベース ファイルのカスタムの場所を指定する場合は、AddSqlite メソッドに関連する引数を指定します。

var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");

SQLiteWeb リソースの追加

SQLite リソースを追加するときに、SQLiteWeb リソースを追加することもできます。SQLiteWeb リソースには、SQLite データベースと対話するための Web インターフェイスが用意されています。 これを行うには、WithSqliteWeb 拡張メソッドを使用します。

var sqlite = builder.AddSQLite("my-database")
                    .WithSqliteWeb();

このコードは、ghcr.io/coleifer/sqlite-web に基づくコンテナーをアプリ ホストに追加します。これにより、接続されている SQLite データベースと対話するための Web インターフェイスが提供されます。 各 SQLiteWeb インスタンスは 1 つの SQLite データベースに接続されます。つまり、複数の SQLiteWeb インスタンスを追加すると、複数の SQLiteWeb コンテナーが存在します。

SQLite 拡張機能の追加

SQLite では、SQLite データベースに追加できる拡張機能がサポートされています。 拡張機能は、NuGet パッケージまたはディスク上の場所を介して提供できます。 SQLite データベースに拡張機能を追加するには、WithNuGetExtension または WithLocalExtension 拡張メソッドを使用します。

手記

SQLite 拡張機能のサポートは試験段階と見なされ、CTASPIRE002 警告が生成されます。

Client 統合

.NET .NET Aspire SQLite クライアント統合を開始するには、📦 CommunityToolkit をインストールします。Aspire.Microsoft.Data.Sqlite クライアントを使用するプロジェクト、つまり SQLite クライアントを使用するアプリケーションのプロジェクトの NuGet パッケージです。 SQLite クライアント統合により、SQLite との対話に使用できる SqliteConnection インスタンスが登録されます。

dotnet add package CommunityToolkit.Aspire.Microsoft.Data.Sqlite

Sqlite クライアントを追加する

クライアントを使用するプロジェクトの Program.cs ファイルで、任意の IHostApplicationBuilderMicrosoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection 拡張メソッドを呼び出して、依存関係挿入コンテナーを介して使用する SqliteConnection を登録します。 このメソッドは、接続名パラメーターを受け取ります。

builder.AddSqliteConnection(connectionName: "sqlite");

先端

connectionName パラメーターは、アプリ ホスト プロジェクトで SQLite リソースを追加するときに使用する名前と一致する必要があります。 詳細については、「SQLite リソースの追加」を参照してください。

ビルダーに SqliteConnection を追加した後、依存関係の挿入を使用して SqliteConnection インスタンスを取得できます。 たとえば、例のサービスから接続オブジェクトを取得するには、それをコンストラクター パラメーターとして定義し、ExampleService クラスが依存関係挿入コンテナーに登録されていることを確認します。

public class ExampleService(SqliteConnection connection)
{
    // Use connection...
}

依存関係の挿入の詳細については、依存関係の挿入 .NET 参照してください。

キー付き Sqlite クライアントを追加する

接続名が異なる複数の SqliteConnection インスタンスを登録する場合があります。 キー付き Sqlite クライアントを登録するには、Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection メソッドを呼び出します。

builder.AddKeyedSqliteConnection(name: "chat");
builder.AddKeyedSqliteConnection(name: "queue");

その後、依存関係の挿入を使用して SqliteConnection インスタンスを取得できます。 たとえば、サービスの例から接続を取得するには、次のようにします。

public class ExampleService(
    [FromKeyedServices("chat")] SqliteConnection chatConnection,
    [FromKeyedServices("queue")] SqliteConnection queueConnection)
{
    // Use connections...
}

構成

SQLite クライアント統合には、プロジェクトの要件と規則を満たす複数の構成アプローチとオプションが用意されています。

接続文字列を使用する

ConnectionStrings 構成セクションの接続文字列を使用する場合は、Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection メソッドを呼び出すときに接続文字列の名前を指定できます。

builder.AddSqliteConnection("sqlite");

その後、接続文字列は ConnectionStrings 構成セクションから取得されます。

{
  "ConnectionStrings": {
    "sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
  }
}

構成プロバイダーを使用する

SQLite クライアント統合では、Microsoft.Extensions.Configurationがサポートされます。 Aspire:Sqlite:Client キーを使用して、appsettings.json または他の構成プロバイダーから Microsoft.Extensions.Hosting.SqliteConnectionSettings を読み込みます。 いくつかのオプションを構成する appsettings.json の例:

{
  "Aspire": {
    "Sqlite": {
      "Client": {
        "ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
        "DisableHealthCheck": true
      }
    }
  }
}