Delen via


.NET .NET Aspire Community Toolkit SQLite-integratie

Omvat: Hosting-integratie en Client-integratie

Notitie

Deze integratie maakt deel uit van de .NET.NET Aspire Community Toolkit en wordt niet officieel ondersteund door het .NET.NET Aspire team.

SQLite is een lichtgewicht, serverloze, zelfstandige SQL-database-engine die veel wordt gebruikt voor lokale gegevensopslag in toepassingen. De .NET Aspire SQLite-integratie biedt een manier om SQLite-databases in uw .NET Aspire-toepassingen te gebruiken en deze te openen via de Microsoft.Data.Sqlite-client.

Hostingintegratie

De SQLite-hostingintegratie modelleert een SQLite-database als het SQLiteResource type en maakt het databasebestand op de opgegeven locatie. Voor toegang tot deze typen en API's waarmee u de 📦 CommunityToolkit kunt toevoegen.Aspire. Hosting.SQLite NuGet-pakket in het app-hostproject project.

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

SQLite-resource toevoegen

Registreer en verbruik de SQLite-integratie in het app-hostproject met behulp van de extensiemethode AddSQLite om de SQLite-database toe te voegen aan de opbouwfunctie voor toepassingen.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Wanneer .NET.NET Aspire een SQLite-database toevoegt aan de app-host, zoals wordt weergegeven in het vorige voorbeeld, wordt er een nieuw SQLite-databasebestand gemaakt in de tijdelijke map van gebruikers.

Als u ook een aangepaste locatie voor het SQLite-databasebestand wilt opgeven, geeft u de relevante argumenten op voor de methode AddSqlite.

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

SQLiteWeb-resource toevoegen

Wanneer u de SQLite-resource toevoegt, kunt u ook de SQLiteWeb-resource toevoegen, die een webinterface biedt voor interactie met de SQLite-database. Gebruik hiervoor de WithSqliteWeb-extensiemethode.

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

Deze code voegt een container toe op basis van ghcr.io/coleifer/sqlite-web aan de app-host, die een webinterface biedt om te communiceren met de SQLite-database waarmee deze is verbonden. Elk SQLiteWeb-exemplaar is verbonden met één SQLite-database, wat betekent dat als u meerdere SQLiteWeb-exemplaren toevoegt, er meerdere SQLiteWeb-containers zijn.

SQLite-extensies toevoegen

SQLite ondersteunt extensies die kunnen worden toegevoegd aan de SQLite-database. Extensies kunnen worden geleverd via een NuGet-pakket of via een locatie op schijf. Gebruik de WithNuGetExtension- of WithLocalExtension-extensiemethoden om extensies toe te voegen aan de SQLite-database.

Notitie

De ondersteuning voor SQLite-extensies wordt beschouwd als experimenteel en produceert een CTASPIRE002 waarschuwing.

integratie van Client

Installeer de 📦 CommunityToolkit om aan de slag te gaan met de .NET.NET Aspire SQLite-clientintegratie.Aspire. Microsoft.Data.Sqlite NuGet-pakket in het clientgebruikte project, dat wil gezegd het project voor de toepassing die gebruikmaakt van de SQLite-client. De SQLite-clientintegratie registreert een SqliteConnection exemplaar dat u kunt gebruiken om te communiceren met SQLite.

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

Sqlite-client toevoegen

Roep in het Program.cs bestand van het clientgebruikte project de Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection-extensiemethode aan op een IHostApplicationBuilder om een SqliteConnection te registreren voor gebruik via de container voor afhankelijkheidsinjectie. De methode gebruikt een verbindingsnaamparameter.

builder.AddSqliteConnection(connectionName: "sqlite");

Advies

De parameter connectionName moet overeenkomen met de naam die wordt gebruikt bij het toevoegen van de SQLite-resource in het app-hostproject. Zie SQLite-resource toevoegenvoor meer informatie.

Nadat u SqliteConnection aan de opbouwfunctie hebt toegevoegd, kunt u het SqliteConnection exemplaar ophalen met behulp van afhankelijkheidsinjectie. Als u bijvoorbeeld uw verbindingsobject wilt ophalen uit een voorbeeldservice, definieert u het als een constructorparameter en zorgt u ervoor dat de klasse ExampleService is geregistreerd bij de container voor afhankelijkheidsinjectie:

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

Voor meer informatie over afhankelijkheidsinjectie, zie .NET afhankelijkheidsinjectie.

De Sqlite-client met sleutel toevoegen

Er kunnen situaties zijn waarin u meerdere SqliteConnection exemplaren met verschillende verbindingsnamen wilt registreren. Als u keyed Sqlite-clients wilt registreren, roept u de methode Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection aan:

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

Vervolgens kunt u de SqliteConnection-exemplaren ophalen via afhankelijkheidsinjectie. Als u bijvoorbeeld de verbinding wilt ophalen uit een voorbeeldservice:

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

Configuratie

De SQLite-clientintegratie biedt meerdere configuratiemethoden en opties om te voldoen aan de vereisten en conventies van uw project.

Een verbindingsreeks gebruiken

Wanneer u een verbindingsreeks uit de sectie ConnectionStrings configuratie gebruikt, kunt u de naam van de verbindingsreeks opgeven bij het aanroepen van de Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection methode:

builder.AddSqliteConnection("sqlite");

Vervolgens wordt de verbindingsreeks opgehaald uit de sectie ConnectionStrings configuratie.

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

Configuratieproviders gebruiken

De SQLite-clientintegratie ondersteunt Microsoft.Extensions.Configuration. Het laadt de Microsoft.Extensions.Hosting.SqliteConnectionSettings van de appsettings.json of andere configuratieproviders met behulp van de Aspire:Sqlite:Client-sleutel. Voorbeeld appsettings.json waarmee een aantal van de opties wordt geconfigureerd:

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