Partager via


.NET .NET Aspire Community Toolkit SQLite Entity Framework intégration

Inclut :Intégration de l’hébergement incluse intégration d’hébergement —&— Client intégration incluseClient

Remarque

Cette intégration fait partie de l'outil communautaire .NET.NET Aspire et n’est pas officiellement supportée par l’équipe .NET.NET Aspire.

SQLite est un moteur de base de données SQL léger, serverless et autonome largement utilisé pour le stockage de données local dans les applications. L’intégration .NET Aspire SQLite permet d’utiliser des bases de données SQLite au sein de vos applications .NET Aspire et de les accéder via le package de support entity Framework Microsoft.EntityFrameworkCore.Sqlite.

Intégration de l’hébergement

L’hébergement SQLite modélise une base de données SQLite comme type SQLiteResource et crée le fichier de base de données à l’emplacement spécifié. Pour accéder à ces types et API qui vous permettent d’ajouter le package NuGet📦CommunityToolkit. Aspire .Hosting.SQLite dans le projet hôte de l'application .

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Pour plus d’informations, consultez dotnet add package ou Gérer les dépendances de packages dans les applications .NET.

Ajouter une ressource SQLite

Dans le projet hôte d’application, inscrivez et utilisez l’intégration SQLite à l’aide de la méthode d’extension AddSQLite pour ajouter la base de données SQLite au générateur d’applications.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Lorsque .NET.NET Aspire ajoute une base de données SQLite à l’hôte de l’application, comme illustré dans l’exemple précédent, il crée un fichier de base de données SQLite dans le répertoire temporaire des utilisateurs.

Sinon, si vous souhaitez spécifier un emplacement personnalisé pour le fichier de base de données SQLite, fournissez les arguments pertinents à la méthode AddSqlite.

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

Ajouter une ressource SQLiteWeb

Lors de l’ajout de la ressource SQLite, vous pouvez également ajouter la ressource SQLiteWeb, qui fournit une interface web pour interagir avec la base de données SQLite. Pour ce faire, utilisez la méthode d’extension WithSqliteWeb.

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

Ce code ajoute un conteneur basé sur ghcr.io/coleifer/sqlite-web à l’hôte de l’application, qui fournit une interface web pour interagir avec la base de données SQLite à laquelle elle est connectée. Chaque instance SQLiteWeb est connectée à une base de données SQLite unique, ce qui signifie que si vous ajoutez plusieurs instances SQLiteWeb, il y aura plusieurs conteneurs SQLiteWeb.

Ajout d’extensions SQLite

SQLite prend en charge les extensions qui peuvent être ajoutées à la base de données SQLite. Les extensions peuvent être fournies via un package NuGet ou via un emplacement sur disque. Utilisez les méthodes d’extension WithNuGetExtension ou WithLocalExtension pour ajouter des extensions à la base de données SQLite.

Remarque

La prise en charge des extensions SQLite est considérée comme expérimentale et génère un avertissement CTASPIRE002.

intégration de Client

Pour commencer à utiliser l’intégration du client .NET.NET Aspire SQLite EF, installez le 📦 CommunityToolkit.Aspire. Microsoft.EntityFrameworkCore.Sqlite package NuGet dans le projet consommant le client, c’est-à-dire le projet pour l’application qui utilise le client SQLite. L’intégration du client SQLite inscrit une instance de SqliteConnection que vous pouvez utiliser pour interagir avec SQLite.

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

Ajouter un client Sqlite

Dans le fichier Program.cs de votre projet consommant le client, appelez la méthode d’extension Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext sur n’importe quelle IHostApplicationBuilder pour inscrire votre sous-classe DbContext à utiliser via le conteneur d’injection de dépendances. La méthode prend un paramètre de nom de connexion.

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

Pourboire

Le paramètre connectionName doit correspondre au nom utilisé lors de l’ajout de la ressource SQLite dans le projet hôte d’application. Pour plus d’informations, consultez Ajouter une ressource SQLite.

Après avoir ajouté YourDbContext au générateur, vous pouvez obtenir l’instance YourDbContext à l’aide de l’injection de dépendances. Par exemple, pour récupérer votre objet source de données à partir d’un exemple de service, définissez-le en tant que paramètre de constructeur et vérifiez que la classe ExampleService est inscrite auprès du conteneur d’injection de dépendances :

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

Pour plus d’informations sur l’injection de dépendances, consultez .NET injection de dépendances.

Enrichir un contexte de base de données SQLite

Vous préférez peut-être utiliser la méthode Entity Framework standard pour obtenir le contexte de la base de données et l’ajouter au conteneur d’injection de dépendances :

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

Remarque

Le nom de la chaîne de connexion que vous passez à la méthode GetConnectionString doit correspondre au nom utilisé lors de l’ajout de la ressource SQLite dans le projet hôte de l’application. Pour plus d’informations, consultez Ajouter une ressource SQLite.

Paramétrage

L’intégration du client SQLite fournit plusieurs approches et options de configuration pour répondre aux exigences et conventions de votre projet.

Utiliser une chaîne de connexion

Lorsque vous utilisez une chaîne de connexion à partir de la section de configuration ConnectionStrings, vous pouvez fournir le nom de la chaîne de connexion lors de l’appel de la méthode Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext :

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

Ensuite, la chaîne de connexion est récupérée à partir de la section de configuration ConnectionStrings.

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

Utiliser des fournisseurs de configuration

L’intégration du client SQLite prend en charge Microsoft.Extensions.Configuration. Il charge le Microsoft.Extensions.Hosting.SqliteConnectionSettings à partir du appsettings.json ou d’autres fournisseurs de configuration en utilisant la clé Aspire:Sqlite:EntityFrameworkCore:Sqlite. Exemple _appsettings.json qui configure certaines des options :

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