Sdílet prostřednictvím


integrace .NET.NET Aspire Community Toolkit SQLite Entity Framework

zahrnuje: hostovací integrace a integrace Client

Poznámka

Tato integrace je součástí sady.NET.NET Aspire Community Toolkit a není oficiálně podporovaná 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 balíčku podpory Microsoft.EntityFrameworkCore.Sqlite Entity Framework.

Integrace hostování

Integrační modely hostující databázi SQLite jako typ SQLiteResource vytvoří soubor databáze v určené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 Manage package dependencies in .NET applications.

Přidejte prostředek 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 je považována za experimentální a generuje upozornění CTASPIRE002.

integrace Client

Pokud chcete začít s integrací klienta EF s .NET.NET Aspire SQLite, nainstalujte sadu 📦 CommunityToolkit.Aspire. Microsoft.EntityFrameworkCore.Sqlite balíček NuGet v projektu, který využívá klienta, tj. projekt pro aplikaci, která používá klienta SQLite. Integrace klienta SQLite registruje instanci SqliteConnection, kterou můžete použít k interakci s SQLite.

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

Přidání klienta Sqlite

V souboru Program.cs ve vašem projektu, který používá klienta, zavolejte metodu rozšíření Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext pro jakýkoli IHostApplicationBuilder a zaregistrujte podtřídu DbContext pro použití skrze kontejner pro vkládání závislostí. Metoda přebírá parametr názvu připojení.

builder.AddSqliteDbContext<YourDbContext>(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í YourDbContext do konstruktoru můžete získat instanci YourDbContext pomocí injektování závislostí. Pokud například chcete načíst objekt zdroje dat 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(YourDbContext context)
{
    // Use context...
}

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

Rozšíření kontextu databáze SQLite

Pokud chcete získat kontext databáze a přidat ji do kontejneru injektáže závislostí, můžete raději použít standardní metodu Entity Framework:

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
        ?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));

Poznámka

Název připojovacího řetězce, který předáte metodě GetConnectionString, 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.

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.AspireEFSqliteExtensions.AddSqliteDbContext zadat název připojovacího řetězce:

builder.AddSqliteDbContext<YourDbContext>("sqlite");

Připojovací řetězec se pak načte z oddílu konfigurace 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 ze appsettings.json nebo dalších poskytovatelů konfigurace za použití klíče Aspire:Sqlite:EntityFrameworkCore:Sqlite. Příklad _appsettings.json, který konfiguruje některé z možností:

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