Condividi tramite


integrazione di SQLite Entity Framework .NET.NET Aspire Community Toolkit

Include:Integrazione di hosting inclusa —&— Client integrazione inclusaClient

Nota

Questa integrazione fa parte di .NET.NET Aspire Community Toolkit e non è ufficialmente supportata dal team .NET.NET Aspire.

SQLite è un motore di database SQL leggero, serverless e autonomo ampiamente usato per l'archiviazione dei dati locali nelle applicazioni. L'integrazione .NET Aspire SQLite consente di usare i database SQLite all'interno delle applicazioni .NET Aspire e di accedervi tramite il pacchetto di supporto di Microsoft.EntityFrameworkCore.Sqlite Entity Framework.

Integrazione dell'hosting

L'integrazione per l'hosting di SQLite modella un database SQLite come tipo SQLiteResource e creerà il file del database nel percorso specificato. Per accedere ai tipi e alle API che consentono di aggiungere il pacchetto NuGet 📦 CommunityToolkit.Aspire.Hosting.SQLite nel progetto host dell'app .

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Per altre informazioni, vedere dotnet add package o Gestire le dipendenze dei pacchetti nelle applicazioni .NET.

Aggiungere una risorsa SQLite

Nel progetto host dell'applicazione, registrare e usare l'integrazione di SQLite utilizzando il metodo di estensione AddSQLite per aggiungere il database SQLite al costruttore dell'applicazione.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Quando .NET.NET Aspire aggiunge un database SQLite all'host dell'app, come illustrato nell'esempio precedente, crea un nuovo file di database SQLite nella directory temporanea degli utenti.

In alternativa, se si vuole specificare un percorso personalizzato per il file di database SQLite, specificare gli argomenti pertinenti per il metodo AddSqlite.

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

Aggiungere una risorsa SQLiteWeb

Quando si aggiunge la risorsa SQLite, è anche possibile aggiungere la risorsa SQLiteWeb, che fornisce un'interfaccia Web per interagire con il database SQLite. A tale scopo, usare il metodo di estensione WithSqliteWeb.

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

Questo codice aggiunge un contenitore basato su ghcr.io/coleifer/sqlite-web all'host dell'app, che fornisce un'interfaccia Web a cui interagire con il database SQLite a cui è connesso. Ogni istanza di SQLiteWeb è connessa a un singolo database SQLite, ovvero se si aggiungono più istanze SQLiteWeb, saranno presenti più contenitori SQLiteWeb.

Aggiunta di estensioni SQLite

SQLite supporta estensioni che possono essere aggiunte al database SQLite. Le estensioni possono essere fornite tramite un pacchetto NuGet o una posizione su disco. Usare i metodi di estensione WithNuGetExtension o WithLocalExtension per aggiungere estensioni al database SQLite.

Nota

Il supporto delle estensioni SQLite è considerato sperimentale e genera un avviso CTASPIRE002.

Client integrazione

Per iniziare con l'integrazione del client SQLite EF .NET.NET Aspire, installare il pacchetto NuGet 📦 CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite nel progetto cliente, ovvero il progetto per l'applicazione che utilizza il client SQLite. L'integrazione client SQLite registra un'istanza di SqliteConnection che è possibile usare per interagire con SQLite.

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

Aggiungere il client Sqlite

Nel file Program.cs del tuo progetto cliente consumatore, chiama il metodo di estensione Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext su qualsiasi IHostApplicationBuilder per registrare la tua sottoclasse DbContext da usare tramite il contenitore di iniezione delle dipendenze. Il metodo accetta un parametro del nome di connessione.

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

Consiglio

Il parametro connectionName deve corrispondere al nome usato quando si aggiunge la risorsa SQLite nel progetto host dell'app. Per altre informazioni, vedere Aggiungere una risorsa SQLite.

Dopo aver aggiunto YourDbContext al generatore, è possibile ottenere l'istanza di YourDbContext usando l'iniezione delle dipendenze. Ad esempio, per recuperare l'oggetto origine dati da un servizio di esempio, definirlo come parametro del costruttore e assicurarsi che la classe ExampleService sia registrata con il contenitore per l'iniezione delle dipendenze.

public class ExampleService(YourDbContext context)
{
    // Use context...
}

Per ulteriori informazioni sull'inserimento delle dipendenze, vedere .NET inserimento delle dipendenze.

Arricchire un contesto di database SQLite

È possibile usare il metodo Entity Framework standard per ottenere il contesto del database e aggiungerlo al contenitore di inserimento delle dipendenze:

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

Nota

Il nome della stringa di connessione passato al metodo GetConnectionString deve corrispondere al nome usato quando si aggiunge la risorsa SQLite nel progetto host dell'app. Per altre informazioni, vedere Aggiungere una risorsa SQLite.

Configurazione

L'integrazione client SQLite offre più approcci di configurazione e opzioni per soddisfare i requisiti e le convenzioni del progetto.

Usare una stringa di connessione

Quando si usa una stringa di connessione dalla sezione di configurazione ConnectionStrings, è possibile specificare il nome della stringa di connessione quando si chiama il metodo Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext:

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

La stringa di connessione verrà quindi recuperata dalla sezione di configurazione ConnectionStrings.

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

Utilizzare i provider di configurazione

L'integrazione client SQLite supporta Microsoft.Extensions.Configuration. Carica il Microsoft.Extensions.Hosting.SqliteConnectionSettings dal appsettings.json o da altri provider di configurazione utilizzando il codice Aspire:Sqlite:EntityFrameworkCore:Sqlite. Esempio _appsettings.json che configura alcune delle opzioni:

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