Udostępnij za pośrednictwem


integracja .NET.NET Aspire Community Toolkit SQLite

obejmuje: integracja, integracja hostingu, i integracja Client

Notatka

Ta integracja jest częścią .NET.NET Aspire Community Toolkit i nie jest oficjalnie obsługiwana przez zespół .NET.NET Aspire.

SQLite to lekki, bezserwerowy, samodzielny aparat bazy danych SQL, który jest powszechnie używany do lokalnego przechowywania danych w aplikacjach. Integracja .NET Aspire SQLite umożliwia korzystanie z baz danych SQLite w aplikacjach .NET Aspire i uzyskiwanie do nich dostępu za pośrednictwem klienta Microsoft.Data.Sqlite.

Integracja hostingu

Integracja hostingu SQLite reprezentuje bazę danych SQLite jako typ SQLiteResource i utworzy plik bazy danych w określonej lokalizacji. Aby uzyskać dostęp do tych typów i interfejsów API, które umożliwiają dodanie pakietu NuGet 📦 CommunityToolkit.Aspire.Hosting.SQLite w hosta aplikacji projektu.

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w .NET aplikacjach.

Dodawanie zasobu SQLite

W projekcie hosta aplikacji zarejestruj i skorzystaj z integracji SQLite przy użyciu metody rozszerzenia AddSQLite, aby dodać bazę danych SQLite do kompilatora aplikacji.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Gdy .NET.NET Aspire dodaje bazę danych SQLite do hosta aplikacji, jak pokazano w poprzednim przykładzie, tworzy nowy plik bazy danych SQLite w katalogu tymczasowym użytkowników.

Alternatywnie, jeśli chcesz określić niestandardową lokalizację dla pliku bazy danych SQLite, podaj odpowiednie argumenty dla metody AddSqlite.

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

Dodawanie zasobu SQLiteWeb

Podczas dodawania zasobu SQLite można również dodać zasób SQLiteWeb, który udostępnia interfejs internetowy umożliwiający interakcję z bazą danych SQLite. W tym celu użyj metody rozszerzenia WithSqliteWeb.

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

Ten kod dodaje kontener oparty na ghcr.io/coleifer/sqlite-web do hosta aplikacji, który udostępnia interfejs internetowy umożliwiający interakcję z bazą danych SQLite, z którą jest połączony. Każde wystąpienie SQLiteWeb jest połączone z pojedynczą bazą danych SQLite, co oznacza, że w przypadku dodawania wielu wystąpień SQLiteWeb będzie wiele kontenerów SQLiteWeb.

Dodawanie rozszerzeń SQLite

SqLite obsługuje rozszerzenia, które można dodać do bazy danych SQLite. Rozszerzenia mogą być dostarczane za pośrednictwem pakietu NuGet lub lokalizacji na dysku. Użyj metod rozszerzenia WithNuGetExtension lub WithLocalExtension, aby dodać rozszerzenia do bazy danych SQLite.

Notatka

Obsługa rozszerzeń SQLite jest uznawana za eksperymentalną i generuje ostrzeżenie CTASPIRE002.

Integracja Client

Aby rozpocząć pracę z integracją klienta .NET.NET Aspire SQLite, zainstaluj pakiet NuGet 📦 CommunityToolkit.Aspire.Microsoft.Data.Sqlite w projekcie, który korzysta z klienta, oznacza to, w projekcie dla aplikacji korzystającej z klienta SQLite. Integracja klienta SQLite rejestruje wystąpienie SqliteConnection, którego można użyć do interakcji z sqlite.

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

Dodaj klienta Sqlite

W pliku Program.cs projektu korzystającego z klienta wywołaj metodę rozszerzenia Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection na dowolnym IHostApplicationBuilder, aby zarejestrować SqliteConnection do użycia za pośrednictwem kontenera wstrzykiwania zależności. Metoda przyjmuje parametr nazwy połączenia.

builder.AddSqliteConnection(connectionName: "sqlite");

Napiwek

Parametr connectionName musi być zgodny z nazwą używaną podczas dodawania zasobu SQLite w projekcie hosta aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie zasobu SQLite.

Po dodaniu SqliteConnection do konstruktora można pobrać wystąpienie SqliteConnection przy użyciu wstrzykiwania zależności. Na przykład aby pobrać obiekt połączenia z przykładowej usługi, zdefiniuj go jako parametr konstruktora i upewnij się, że klasa ExampleService jest zarejestrowana w kontenerze iniekcji zależności:

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

Aby uzyskać więcej informacji na temat wstrzykiwania zależności, zobacz .NET wstrzykiwanie zależności.

Dodaj klienta SQLite z kluczami

Mogą wystąpić sytuacje, w których chcesz zarejestrować wiele wystąpień SqliteConnection z różnymi nazwami połączeń. Aby zarejestrować kluczowych klientów sqlite, wywołaj metodę Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection:

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

Następnie można pobrać wystąpienia SqliteConnection przy użyciu wstrzykiwania zależności. Aby na przykład pobrać połączenie z przykładowej usługi:

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

Konfiguracja

Integracja klienta SQLite zapewnia wiele metod konfiguracji i opcji spełniających wymagania i konwencje projektu.

Używanie parametrów połączenia

W przypadku używania parametrów połączenia z sekcji konfiguracji ConnectionStrings podczas wywoływania metody Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection można podać nazwę parametrów połączenia:

builder.AddSqliteConnection("sqlite");

Następnie parametry połączenia zostaną pobrane z sekcji konfiguracji ConnectionStrings.

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

Korzystanie z dostawców konfiguracji

Integracja klienta SQLite obsługuje Microsoft.Extensions.Configuration. Ładuje Microsoft.Extensions.Hosting.SqliteConnectionSettings z appsettings.json lub innych dostawców konfiguracji za pomocą klucza Aspire:Sqlite:Client. Przykład appsettings.json, który konfiguruje niektóre opcje:

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