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