Freigeben über


.NET .NET Aspire Community Toolkit für die SQLite-Integration

umfasst: Hostingintegration und Client Integration

Anmerkung

Diese Integration ist Teil des .NET.NET Aspire Community Toolkit und wird vom .NET.NET Aspire Team nicht offiziell unterstützt.

SQLite- ist ein einfaches, serverloses, eigenständiges SQL-Datenbankmodul, das häufig für die lokale Datenspeicherung in Anwendungen verwendet wird. Die .NET Aspire SQLite-Integration bietet eine Möglichkeit, SQLite-Datenbanken in Ihren .NET Aspire-Anwendungen zu verwenden und über den Microsoft.Data.Sqlite-Client darauf zuzugreifen.

Hosting-Integration

Die SQLite-Hostingintegration modelliert eine SQLite-Datenbank als SQLiteResource Typ und erstellt die Datenbankdatei am angegebenen Speicherort. Um auf diese Typen und APIs zuzugreifen, die es Ihnen ermöglichen, das 📦 CommunityToolkitAspire.Hosting.SQLite NuGet-Paket im App-Host Projekt hinzuzufügen.

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Weitere Informationen finden Sie unter dotnet add package oder Paketabhängigkeiten in .NET-Anwendungen verwalten.

Hinzufügen einer SQLite-Ressource

Registrieren und nutzen Sie im App-Hostprojekt die SQLite-Integration mithilfe der AddSQLite Erweiterungsmethode, um die SQLite-Datenbank dem Anwendungs-Generator hinzuzufügen.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Wenn .NET.NET Aspire dem App-Host eine SQLite-Datenbank hinzufügt, wie im vorherigen Beispiel gezeigt, wird eine neue SQLite-Datenbankdatei im temporären Benutzerverzeichnis erstellt.

Wenn Sie auch einen benutzerdefinierten Speicherort für die SQLite-Datenbankdatei angeben möchten, geben Sie die relevanten Argumente für die AddSqlite-Methode an.

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

Hinzufügen einer SQLiteWeb-Ressource

Beim Hinzufügen der SQLite-Ressource können Sie auch die SQLiteWeb-Ressource hinzufügen, die eine Webschnittstelle für die Interaktion mit der SQLite-Datenbank bereitstellt. Verwenden Sie dazu die WithSqliteWeb Erweiterungsmethode.

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

Dieser Code fügt dem App-Host einen Container basierend auf ghcr.io/coleifer/sqlite-web hinzu, der eine Webschnittstelle für die Interaktion mit der SQLite-Datenbank bereitstellt, mit der sie verbunden ist. Jede SQLiteWeb-Instanz ist mit einer einzigen SQLite-Datenbank verbunden, d. h., wenn Sie mehrere SQLiteWeb-Instanzen hinzufügen, gibt es mehrere SQLiteWeb-Container.

Hinzufügen von SQLite-Erweiterungen

SQLite unterstützt Erweiterungen, die der SQLite-Datenbank hinzugefügt werden können. Erweiterungen können entweder über ein NuGet-Paket oder über einen Speicherort auf dem Datenträger bereitgestellt werden. Verwenden Sie entweder die WithNuGetExtension- oder WithLocalExtension Erweiterungsmethoden, um Erweiterungen zur SQLite-Datenbank hinzuzufügen.

Anmerkung

Die SQLite-Erweiterungsunterstützung gilt als experimentell und erzeugt eine CTASPIRE002 Warnung.

Client Integration

Um mit der .NET.NET Aspire SQLite-Clientintegration zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire. Microsoft.Data.Sqlite NuGet-Paket im clientverwendenden Projekt, d. h. das Projekt für die Anwendung, die den SQLite-Client verwendet. Die SQLite-Clientintegration registriert eine SqliteConnection Instanz, die Sie für die Interaktion mit SQLite verwenden können.

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

Hinzufügen des Sqlite-Clients

Rufen Sie in der Program.cs Datei Ihres Client-Anwendungsprojekts die Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection Erweiterungsmethode an jedem IHostApplicationBuilder auf, um eine SqliteConnection für die Verwendung über den Abhängigkeitsinjektionscontainer zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddSqliteConnection(connectionName: "sqlite");

Empfehlung

Der parameter connectionName muss mit dem Namen übereinstimmen, der beim Hinzufügen der SQLite-Ressource im App-Hostprojekt verwendet wird. Weitere Informationen finden Sie unter Hinzufügen von SQLite-Ressourcen-.

Nachdem Sie SqliteConnection zum Generator hinzugefügt haben, können Sie die SqliteConnection Instanz mithilfe der Abhängigkeitseinfügung abrufen. Wenn Sie ihr Verbindungsobjekt beispielsweise aus einem Beispieldienst abrufen möchten, definieren Sie es als Konstruktorparameter und stellen Sie sicher, dass die ExampleService Klasse beim Container zum Einfügen von Abhängigkeiten registriert ist:

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

Weitere Informationen zur Abhängigkeitsinjektion finden Sie unter .NET Abhängigkeitsinjektion.

Hinzufügen eines sqlite-Clients mit Schlüsseln

Es kann Situationen geben, in denen Sie mehrere SqliteConnection Instanzen mit unterschiedlichen Verbindungsnamen registrieren möchten. Rufen Sie die Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection-Methode auf, um keyed Sqlite-Clients zu registrieren:

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

Anschließend können Sie die SqliteConnection Instanzen mithilfe der Abhängigkeitseinfügung abrufen. So rufen Sie beispielsweise die Verbindung aus einem Beispieldienst ab:

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

Konfiguration

Die SQLite-Clientintegration bietet mehrere Konfigurationsansätze und -optionen, um die Anforderungen und Konventionen Ihres Projekts zu erfüllen.

Verwende eine Verbindungszeichenfolge

Wenn Sie eine Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings verwenden, können Sie beim Aufrufen der Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection-Methode den Namen der Verbindungszeichenfolge angeben:

builder.AddSqliteConnection("sqlite");

Anschließend wird die Verbindungszeichenfolge aus dem Konfigurationsabschnitt ConnectionStrings abgerufen.

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

Verwenden von Konfigurationsanbietern

Die SQLite-Clientintegration unterstützt Microsoft.Extensions.Configuration. Sie lädt die Microsoft.Extensions.Hosting.SqliteConnectionSettings aus dem appsettings.json oder anderen Konfigurationsanbietern mithilfe des Aspire:Sqlite:Client Schlüssels. Beispiel appsettings.json, das einige der Optionen konfiguriert:

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