Compartir a través de


.NET .NET Aspire integración del Community Toolkit con SQLite Entity Framework

Incluye:Integración de alojamiento incluida Integración de alojamiento —&— Client integración incluidaClient integración

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 paquete de compatibilidad de Microsoft.EntityFrameworkCore.Sqlite Entity Framework.

Integración de hospedaje

La integración de alojamiento de SQLite modela una base de datos SQLite como el tipo SQLiteResource y creará el archivo de base de datos en la ubicación especificada. Para acceder a estos tipos y 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 las dependencias del paquete en aplicaciones .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 Client

Para empezar a trabajar con la integración del cliente EF de .NET.NET Aspire SQLite, instale el paquete NuGet 📦 CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite en el proyecto que consume el cliente, es decir, el proyecto de la aplicación que utiliza 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.EntityFrameworkCore.Sqlite

Agregar cliente Sqlite

En el archivo Program.cs de su proyecto cliente consumidor, invoque el método extendido Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext en cualquier IHostApplicationBuilder para registrar su subclase de DbContext para su uso a través del contenedor de inyección de dependencias. El método toma un parámetro de nombre de conexión.

builder.AddSqliteDbContext<YourDbContext>(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 YourDbContext al generador, puede obtener la instancia de YourDbContext mediante la inyección de dependencias. Por ejemplo, para recuperar el objeto de origen de datos 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(YourDbContext context)
{
    // Use context...
}

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

Enriquecer un contexto de base de datos de SQLite

Es posible que prefiera usar el método de Entity Framework estándar para obtener el contexto de la base de datos y agregarlo al contenedor de inserción de dependencias:

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

Nota

El nombre de la cadena de conexión que se pasa al método GetConnectionString 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.

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.AspireEFSqliteExtensions.AddSqliteDbContext:

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

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

{
  "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 usando la clave Aspire:Sqlite:EntityFrameworkCore:Sqlite. Ejemplo _appsettings.json que configura algunas de las opciones:

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