Freigeben über


Integration von .NET.NET Aspire Community Toolkit SQLite Entity Framework

Enthält:Hosting-Integration inbegriffen Hosting-Integration —&— Client Integration inbegriffenClient Integration

Anmerkung

Diese Integration ist Teil des .NET.NET Aspire Community Toolkit und 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 das Microsoft.EntityFrameworkCore.Sqlite Entity Framework-Supportpaket darauf zuzugreifen.

Hosting-Integration

Die SQLite-Hostingintegration modelliert eine SQLite-Datenbank als SQLiteResource Typ und erstellt die Datenbankdatei am angegebenen Speicherort. Um Zugriff auf diese Typen und APIs zu erhalten, mit denen Sie das Aspire NuGet-Paket im App-Host-Projekt hinzufügen können.

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 EF-Clientintegration zu beginnen, installieren Sie das 📦 CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite NuGet-Paket im Projekt, das den Client nutzt, also im Projekt der 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.EntityFrameworkCore.Sqlite

Hinzufügen des Sqlite-Clients

Rufen Sie in der Program.cs-Datei Ihres clientkonsumierenden Projekts die Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext-Erweiterungsmethode auf jedem IHostApplicationBuilder auf, um Ihre DbContext-Unterklasse für die Verwendung über den Dependency Injection-Container zu registrieren. Die Methode verwendet einen Verbindungsnamenparameter.

builder.AddSqliteDbContext<YourDbContext>(connectionName: "sqlite");

Tipp

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 YourDbContext zum Generator hinzugefügt haben, können Sie die YourDbContext Instanz mithilfe der Abhängigkeitseinfügung abrufen. Wenn Sie beispielsweise das Datenquellenobjekt aus einem Beispieldienst abrufen möchten, definieren Sie es als Konstruktorparameter, und stellen Sie sicher, dass die ExampleService Klasse im Container zum Einfügen von Abhängigkeiten registriert ist:

public class ExampleService(YourDbContext context)
{
    // Use context...
}

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

Anreichern eines SQLite-Datenbankkontexts

Möglicherweise möchten Sie die standardmäßige Entity Framework-Methode verwenden, um den Datenbankkontext abzurufen und ihn zum Abhängigkeitseinfügungscontainer hinzuzufügen.

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
        ?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));

Anmerkung

Der Verbindungszeichenfolgenname, den Sie an die GetConnectionString-Methode übergeben, 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-.

Konfiguration

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

Verwenden Sie eine Verbindungszeichenfolge

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

builder.AddSqliteDbContext<YourDbContext>("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 Konfigurationsquellen mithilfe des Aspire:Sqlite:EntityFrameworkCore:Sqlite-Schlüssels. Beispiel _appsettings.json, das einige der Optionen konfiguriert:

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