Compartir a través de


Integración de SQLite con el Community Toolkit .NET.NET Aspire

incluye: integración de hospedaje de e integración de Client

Nota

Esta integración forma parte del .NET.NET Aspire Community Toolkit y no es compatible oficialmente con el equipo de .NET.NET Aspire.

SQLite es un motor de base de datos SQL ligero, sin servidor y independiente que se usa ampliamente para el almacenamiento de datos local en aplicaciones. La integración de SQLite .NET Aspire proporciona una manera de usar bases de datos de SQLite dentro de las aplicaciones de .NET Aspire y acceder a ellas a través del cliente de Microsoft.Data.Sqlite.

Integración de hospedaje

La integración de hosting de SQLite modela una base de datos SQLite como tipo SQLiteResource y creará el archivo de base de datos en la ubicación especificada. Para acceder a estos tipos y las API que permiten agregar el paquete NuGet 📦 CommunityToolkit.Aspire.Hosting.SQLite en el proyecto host de la aplicación .

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Para obtener más información, consulte dotnet add package o Administrar dependencias de paquetes en aplicaciones de .NET.

Adición de un recurso de SQLite

En el proyecto host de la aplicación, registre y consuma la integración de SQLite mediante el método de extensión AddSQLite para agregar la base de datos de SQLite al generador de aplicaciones.

var builder = DistributedApplication.CreateBuilder(args);

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

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

Cuando .NET.NET Aspire agrega una base de datos SQLite al host de la aplicación, como se muestra en el ejemplo anterior, crea un nuevo archivo de base de datos sqLite en el directorio temporal de usuarios.

Como alternativa, si desea especificar una ubicación personalizada para el archivo de base de datos de SQLite, proporcione los argumentos pertinentes al método AddSqlite.

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

Adición de un recurso SQLiteWeb

Al agregar el recurso SQLite, también puede agregar el recurso SQLiteWeb, que proporciona una interfaz web para interactuar con la base de datos de SQLite. Para ello, use el método de extensión WithSqliteWeb.

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

Este código agrega un contenedor basado en ghcr.io/coleifer/sqlite-web al host de la aplicación, que proporciona una interfaz web para interactuar con la base de datos de SQLite a la que está conectada. Cada instancia de SQLiteWeb está conectada a una base de datos de SQLite única, lo que significa que si agrega varias instancias de SQLiteWeb, habrá varios contenedores SQLiteWeb.

Adición de extensiones de SQLite

SQLite admite extensiones que se pueden agregar a la base de datos de SQLite. Las extensiones se pueden proporcionar a través de un paquete NuGet o a través de una ubicación en el disco. Use los métodos de extensión WithNuGetExtension o WithLocalExtension para agregar extensiones a la base de datos de SQLite.

Nota

La compatibilidad con extensiones de SQLite se considera experimental y genera una advertencia CTASPIRE002.

integración de Client

Para empezar a trabajar con la integración del cliente de SQLite .NET.NET Aspire, instale el paquete NuGet 📦 CommunityToolkit.Aspire.Microsoft.Data.Sqlite en el proyecto que usa el cliente, es decir, el proyecto de la aplicación que utiliza el cliente de SQLite. La integración de cliente de SQLite registra una instancia de SqliteConnection que puede usar para interactuar con SQLite.

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

Agregar cliente Sqlite

En el archivo Program.cs del proyecto que consume el cliente, llame al método de extensión Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection en cualquier IHostApplicationBuilder para registrar un SqliteConnection para su uso a través del contenedor de inserción de dependencias. El método toma un parámetro de nombre de conexión.

builder.AddSqliteConnection(connectionName: "sqlite");

Propina

El parámetro connectionName debe coincidir con el nombre usado al agregar el recurso SQLite en el proyecto host de la aplicación. Para obtener más información, consulte Agregar recurso de SQLite.

Después de agregar SqliteConnection al generador, puede obtener la instancia de SqliteConnection mediante la inyección de dependencias. Por ejemplo, para recuperar el objeto de conexión de un servicio de ejemplo, definalo como parámetro de constructor y asegúrese de que la clase ExampleService está registrada con el contenedor de inserción de dependencias:

public class ExampleService(SqliteConnection connection)
{
    // Use connection...
}

Para obtener más información sobre la inserción de dependencias, consulte .NET inserción de dependencias.

Adición de un cliente sqlite con clave

Puede haber situaciones en las que quiera registrar varias instancias de SqliteConnection con nombres de conexión diferentes. Para registrar clientes sqlite con clave, llame al método Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection:

builder.AddKeyedSqliteConnection(name: "chat");
builder.AddKeyedSqliteConnection(name: "queue");

A continuación, puede recuperar las instancias de SqliteConnection mediante la inyección de dependencias. Por ejemplo, para recuperar la conexión de un servicio de ejemplo:

public class ExampleService(
    [FromKeyedServices("chat")] SqliteConnection chatConnection,
    [FromKeyedServices("queue")] SqliteConnection queueConnection)
{
    // Use connections...
}

Configuración

La integración de cliente de SQLite proporciona varios enfoques de configuración y opciones para cumplir los requisitos y convenciones del proyecto.

Uso de una cadena de conexión

Al usar una cadena de conexión de la sección de configuración de ConnectionStrings, puede proporcionar el nombre de la cadena de conexión al llamar al método Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection:

builder.AddSqliteConnection("sqlite");

A continuación, la cadena de conexión se recuperará de la sección ConnectionStrings de configuración.

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

Uso de proveedores de configuración

La integración del cliente de SQLite admite Microsoft.Extensions.Configuration. Carga el Microsoft.Extensions.Hosting.SqliteConnectionSettings desde el appsettings.json u otros proveedores de configuración utilizando la clave Aspire:Sqlite:Client. Ejemplo appsettings.json que configura algunas de las opciones:

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