.NET .NET Aspire Community Toolkit Integração do SQLite Entity Framework
Inclui: Integração de Hosting e Integração de
Client
Observação
Essa integração faz parte do .NET.NET Aspire Community Toolkit e não é oficialmente suportada pela equipe .NET.NET Aspire.
SQLite é um mecanismo de banco de dados SQL leve, sem servidor e autônomo que é amplamente usado para armazenamento de dados locais em aplicativos. A integração .NET Aspire SQLite fornece uma maneira de usar bancos de dados SQLite em seus aplicativos .NET Aspire e acessá-los por meio do pacote de suporte do Microsoft.EntityFrameworkCore.Sqlite
Entity Framework.
Integração de hospedagem
A integração de hospedagem SQLite modela um banco de dados SQLite como o tipo SQLiteResource
e criará o arquivo de banco de dados no local especificado. Para acessar esses tipos e APIs que permitem adicionar o 📦 CommunityToolkit.Aspire. Hosting.SQLite pacote NuGet no aplicativo host projeto.
- .NET CLI
- ReferênciaPacote
dotnet add package CommunityToolkit.Aspire.Hosting.SQLite
Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em .NET aplicações.
Adicionar recurso SQLite
No projeto de host do aplicativo, registre e consuma a integração SQLite usando o método de extensão AddSQLite
para adicionar o banco de dados SQLite ao construtor de aplicativos.
var builder = DistributedApplication.CreateBuilder(args);
var sqlite = builder.AddSQLite("my-database");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(sqlite);
Quando .NET.NET Aspire adiciona um banco de dados SQLite ao host do aplicativo, como mostrado no exemplo anterior, ele cria um novo arquivo de banco de dados SQLite no diretório temp users.
Como alternativa, se você quiser especificar um local personalizado para o arquivo de banco de dados SQLite, forneça os argumentos relevantes para o método AddSqlite
.
var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");
Adicionar recurso SQLiteWeb
Ao adicionar o recurso SQLite, você também pode adicionar o recurso SQLiteWeb, que fornece uma interface da Web para interagir com o banco de dados SQLite. Para fazer isso, use o método de extensão WithSqliteWeb
.
var sqlite = builder.AddSQLite("my-database")
.WithSqliteWeb();
Esse código adiciona um contêiner baseado em ghcr.io/coleifer/sqlite-web
ao host do aplicativo, que fornece uma interface da Web para interagir com o banco de dados SQLite ao qual ele está conectado. Cada instância SQLiteWeb é conectada a um único banco de dados SQLite, o que significa que, se você adicionar várias instâncias SQLiteWeb, haverá vários contêineres SQLiteWeb.
Adicionando extensões SQLite
SQLite suporta extensões que podem ser adicionadas ao banco de dados SQLite. As extensões podem ser fornecidas por meio de um pacote NuGet ou por meio de um local no disco. Use os métodos de extensão WithNuGetExtension
ou WithLocalExtension
para adicionar extensões ao banco de dados SQLite.
Observação
O suporte a extensões SQLite é considerado experimental e produz um aviso CTASPIRE002
.
Client integração
Para começar a usar a integração do cliente .NET.NET Aspire SQLite EF, instale o 📦 CommunityToolkit.Aspire. Microsoft.EntityFrameworkCore.Sqlite pacote NuGet no projeto que consome cliente, ou seja, o projeto para o aplicativo que usa o cliente SQLite. A integração do cliente SQLite registra uma instância de SqliteConnection
que você pode usar para interagir com o SQLite.
- .NET CLI
- ReferênciaDePacote
dotnet add package CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite
Adicionar cliente Sqlite
No arquivo Program.cs do seu projeto consumidor de cliente, chame o método de extensão Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext
em qualquer IHostApplicationBuilder para registar a sua subclasse DbContext para ser usada através do contentor de injeção de dependência. O método usa um parâmetro de nome de conexão.
builder.AddSqliteDbContext<YourDbContext>(connectionName: "sqlite");
Dica
O parâmetro connectionName
deve corresponder ao nome usado ao adicionar o recurso SQLite no projeto host do aplicativo. Para obter mais informações, consulte Adicionar recurso SQLite.
Depois de adicionar YourDbContext
ao construtor, você pode obter a instância YourDbContext
usando a injeção de dependência. Por exemplo, para recuperar seu objeto de fonte de dados de um serviço de exemplo, defina-o como um parâmetro de construtor e verifique se a classe ExampleService
está registrada com o contêiner de injeção de dependência:
public class ExampleService(YourDbContext context)
{
// Use context...
}
Para obter mais informações sobre a injeção de dependência, consulte .NET injeção de dependência.
Enriqueça um contexto de banco de dados SQLite
Você pode preferir usar o método padrão do Entity Framework para obter o contexto do banco de dados e adicioná-lo ao contêiner de injeção de dependência:
builder.Services.AddDbContext<YourDbContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));
Observação
O nome da cadeia de conexão que você passa para o método GetConnectionString deve corresponder ao nome usado ao adicionar o recurso SQLite no projeto host do aplicativo. Para obter mais informações, consulte Adicionar recurso SQLite.
Configuração
A integração do cliente SQLite fornece várias abordagens e opções de configuração para atender aos requisitos e convenções do seu projeto.
Usar uma cadeia de conexão
Ao usar uma cadeia de conexão da seção de configuração de ConnectionStrings
, você pode fornecer o nome da cadeia de conexão ao chamar o método Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext
:
builder.AddSqliteDbContext<YourDbContext>("sqlite");
Em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings
.
{
"ConnectionStrings": {
"sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
}
}
Usar provedores de configuração
A integração do cliente SQLite suporta Microsoft.Extensions.Configuration. Carrega o Microsoft.Extensions.Hosting.SqliteConnectionSettings
a partir do appsettings.json ou de outros provedores de configuração usando a chave Aspire:Sqlite:EntityFrameworkCore:Sqlite
. Exemplo _appsettings.json que configura algumas das opções:
{
"Aspire": {
"Sqlite": {
"EntityFrameworkCore": {
"Sqlite": {
"ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
"DisableHealthCheck": true
}
}
}
}
}