.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
}
}
}
}