Sdílet prostřednictvím


Integrace .NET.NET Aspire Community Toolkit SQLite

zahrnuje: integraci hostování a Client integraci

Poznámka

Tato integrace je součástí .NET.NET Aspire Community Toolkit a není oficiálně podporována týmem .NET.NET Aspire.

SQLite je jednoduchý, bezserverový databázový stroj SQL, který se běžně používá pro místní úložiště dat v aplikacích. Integrace .NET Aspire SQLite poskytuje způsob, jak používat databáze SQLite v rámci .NET Aspire aplikací a přistupovat k nim prostřednictvím klienta Microsoft.Data.Sqlite.

Integrace hostování

Integrace SQLite hostingu modeluje databázi SQLite jako typ SQLiteResource a vytvoří soubor databáze v zadaném umístění. Přístup k těmto typům a rozhraním API, které umožňují přidat 📦 CommunityToolkit.Aspire. Hostování.SQLite balíčku NuGet v projektu hostitele aplikace .

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Další informace najdete v tématu dotnet add package nebo Správa závislostí balíčků v .NET aplikacích.

Přidání prostředku SQLite

V projektu hostitele aplikace zaregistrujte a využijte integraci SQLite pomocí metody rozšíření AddSQLite pro přidání databáze SQLite do tvůrce aplikací.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Když .NET.NET Aspire přidá do hostitele aplikace databázi SQLite, jak je znázorněno v předchozím příkladu, vytvoří nový soubor databáze SQLite v dočasném adresáři uživatelů.

Případně pokud chcete zadat vlastní umístění pro soubor databáze SQLite, zadejte příslušné argumenty pro AddSqlite metodu.

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

Přidání prostředku SQLiteWeb

Při přidávání prostředku SQLite můžete také přidat prostředek SQLiteWeb, který poskytuje webové rozhraní pro interakci s databází SQLite. K tomu použijte metodu rozšíření WithSqliteWeb.

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

Tento kód přidá kontejner založený na ghcr.io/coleifer/sqlite-web k hostiteli aplikace, který poskytuje webové rozhraní pro interakci s databází SQLite, ke které je připojený. Každá instance SQLiteWeb je připojená k jedné databázi SQLite, což znamená, že pokud přidáte více instancí SQLiteWeb, bude existovat více kontejnerů SQLiteWeb.

Přidání rozšíření SQLite

SQLite podporuje rozšíření, která lze přidat do databáze SQLite. Rozšíření je možné poskytnout buď prostřednictvím balíčku NuGet, nebo prostřednictvím umístění na disku. Pomocí metod rozšíření WithNuGetExtension nebo WithLocalExtension přidejte rozšíření do databáze SQLite.

Poznámka

Podpora rozšíření SQLite se považuje za experimentální a způsobuje CTASPIRE002 upozornění.

integrace Client

Chcete-li začít s integrací klienta .NET.NET Aspire SQLite, nainstalujte balíček NuGet 📦 CommunityToolkit.Aspire.Microsoft.Data.Sqlite v projektu, který využívá klienta, tedy v projektu aplikace, která využívá klienta SQLite. Integrace klienta SQLite registruje instanci SqliteConnection, kterou můžete použít k interakci s SQLite.

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

Přidání klienta Sqlite

V souboru Program.cs pro projekt využívající klienta zavolejte metodu rozšíření Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection pro jakýkoli IHostApplicationBuilder a zaregistrujte SqliteConnection pro použití prostřednictvím kontejneru pro injektáže závislostí. Metoda přebírá parametr názvu připojení.

builder.AddSqliteConnection(connectionName: "sqlite");

Spropitné

Parametr connectionName se musí shodovat s názvem použitým při přidávání prostředku SQLite do hostitelského projektu aplikace. Další informace najdete v tématu Přidání prostředku SQLite.

Po přidání SqliteConnection do builderu můžete získat instanci SqliteConnection pomocí injektování závislostí. Pokud například chcete načíst objekt připojení z ukázkové služby, definujte ho jako parametr konstruktoru a ujistěte se, že je třída ExampleService zaregistrovaná v kontejneru injektáže závislostí:

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

Další informace o injektáži závislostí najdete v tématu .NET injektáž závislostí.

Přidání klienta Sqlite s klíči

Mohou nastat situace, kdy budete chtít zaregistrovat více instancí SqliteConnection s různými názvy připojení. Pokud chcete zaregistrovat klienty Sqlite s klíči, zavolejte metodu Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection:

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

Potom můžete načíst SqliteConnection instance pomocí injektáže závislostí. Například pro získání připojení z ukázkové služby:

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

Konfigurace

Integrace klienta SQLite poskytuje několik přístupů a možností konfigurace pro splnění požadavků a konvencí projektu.

Použijte připojovací řetězec

Při použití připojovacího řetězce z oddílu konfigurace ConnectionStrings můžete při volání metody Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection zadat název připojovacího řetězce:

builder.AddSqliteConnection("sqlite");

Pak se připojovací řetězec načte z konfiguračního oddílu ConnectionStrings.

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

Použití zprostředkovatelů konfigurace

Integrace klienta SQLite podporuje Microsoft.Extensions.Configuration. Načte Microsoft.Extensions.Hosting.SqliteConnectionSettings z appsettings.json nebo jiných zprostředkovatelů konfigurace s použitím klíče Aspire:Sqlite:Client. Příklad appsettings.json, který konfiguruje některé z možností:

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