Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Not
Den här integreringen Aspire är en del av Community Toolkit och stöds inte officiellt av Aspire teamet.
              SQLite är en lätt, serverlös, fristående SQL-databasmotor som ofta används för lokal datalagring i program. Med Aspire SQLite-integrering kan du använda SQLite-databaser i dina Aspire-program och komma åt dem via supportpaketet för Microsoft.EntityFrameworkCore.Sqlite Entity Framework.
Hosting-integration
SQLite-värdintegrering modellerar en SQLite-databas som typen SQLiteResource och skapar databasfilen på den angivna platsen. För att få åtkomst till dessa typer och API:er som gör att du kan lägga 📦 till CommunityToolkit.Aspire. Hosting.SQLite NuGet-paketet i AppHost-projektet .
dotnet add package CommunityToolkit.Aspire.Hosting.SQLite
Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.
Lägga till SQLite-resurs
I AppHost-projektet registrerar och använder du SQLite-integreringen AddSQLite med hjälp av tilläggsmetoden för att lägga till SQLite-databasen i programverktyget.
var builder = DistributedApplication.CreateBuilder(args);
var sqlite = builder.AddSQLite("my-database");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(sqlite);
När Aspire en SQLite-databas läggs till i AppHost, som du ser i föregående exempel, skapas en ny SQLite-databasfil i användar temp-katalogen.
Om du vill ange en anpassad plats för SQLite-databasfilen kan du också ange relevanta argument för metoden AddSqlite.
var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");
Lägg till SQLiteWeb-resurs
När du lägger till SQLite-resursen kan du också lägga till SQLiteWeb-resursen, som tillhandahåller ett webbgränssnitt för att interagera med SQLite-databasen. För att göra detta, använd utökningsmetoden WithSqliteWeb.
var sqlite = builder.AddSQLite("my-database")
                    .WithSqliteWeb();
Den här koden lägger till en container som baseras på ghcr.io/coleifer/sqlite-web AppHost, som tillhandahåller ett webbgränssnitt för att interagera med den SQLite-databas som den är ansluten till. Varje SQLiteWeb-instans är ansluten till en enda SQLite-databas, vilket innebär att om du lägger till flera SQLiteWeb-instanser kommer det att finnas flera SQLiteWeb-containrar.
Lägga till SQLite-tillägg
SQLite stöder tillägg som kan läggas till i SQLite-databasen. Tillägg kan antingen tillhandahållas via ett NuGet-paket eller via en plats på disken. Använd tilläggsmetoderna WithNuGetExtension eller WithLocalExtension för att lägga till tillägg i SQLite-databasen.
Not
Stöd för SQLite-tillägg anses vara experimentellt och ger en CTASPIRE002 varning.
Client integrering
Kom igång med SQLite EF-klientintegrering genom Aspire att 📦 installera CommunityToolkit.Aspire. Microsoft.EntityFrameworkCore.Sqlite NuGet-paketet i det klientkrävande projektet, dvs. projektet för programmet som använder SQLite-klienten. SQLite-klientintegrering registrerar en SqliteConnection instans som du kan använda för att interagera med SQLite.
dotnet add package CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite
Lägg till Sqlite-klient
I den Program.cs filen för ditt klientkonsumtionsprojekt anropar du AddSqliteDbContext-tilläggsmetoden på valfri IHostApplicationBuilder för att registrera din DbContext-underklass för användning via containern för beroendeinjicering. Metoden tar en parameter för anslutningsnamn.
builder.AddSqliteDbContext<YourDbContext>(name: "sqlite");
Tips
Parametern name måste matcha namnet som används när du lägger till SQLite-resursen i AppHost-projektet. Mer information finns i Lägg till SQLite-resurs.
När du har lagt till YourDbContext i byggaren kan du hämta YourDbContext-instansen med hjälp av beroendeinjektion. Om du till exempel vill hämta datakällobjektet från en exempeltjänst definierar du det som en konstruktorparameter och kontrollerar att klassen ExampleService är registrerad med containern för beroendeinmatning:
public class ExampleService(YourDbContext context)
{
    // Use context...
}
Mer information om beroendeinmatning finns i .NET beroendeinmatning.
Berika en SQLite-databaskontext
Du kanske föredrar att använda entitetsramverkets standardmetod för att hämta databaskontexten och lägga till den i containern för beroendeinmatning:
builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
        ?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));
Not
Anslutningssträngens namn som du skickar till GetConnectionString metoden måste matcha namnet som användes när du lägger till SQLite-resursen i AppHost-projektet. Mer information finns i Lägg till SQLite-resurs.
Konfiguration
SQLite-klientintegreringen innehåller flera konfigurationsmetoder och alternativ för att uppfylla kraven och konventionerna i ditt projekt.
Använda en anslutningssträng
När du använder en anslutningssträng från ConnectionStrings-konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar metoden Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext:
builder.AddSqliteDbContext<YourDbContext>("sqlite");
Sedan hämtas anslutningssträngen från avsnittet ConnectionStrings konfiguration.
{
  "ConnectionStrings": {
    "sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
  }
}
Använda konfigurationsprovidrar
SQLite-klientintegrering stöder Microsoft.Extensions.Configuration. Den läser in Microsoft.Extensions.Hosting.SqliteConnectionSettings från appsettings.json eller andra konfigurationsleverantörer genom nyckeln Aspire:Sqlite:EntityFrameworkCore:Sqlite. Exempel appsettings.json som konfigurerar några av alternativen:
{
  "Aspire": {
    "Sqlite": {
      "EntityFrameworkCore": {
        "Sqlite": {
          "ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
          "DisableHealthCheck": true
        }
      }
    }
  }
}