包含: -
Client 集成
注意
此集成是社区工具包的Aspire一部分,不受团队正式支持Aspire。
SQLite 是一种轻型、无服务器、独立 SQL 数据库引擎,通常用于应用程序中的本地数据存储。
Aspire SQLite 集成提供了在 Aspire 应用程序中使用 SQLite 数据库的方法,并通过 Microsoft.EntityFrameworkCore.Sqlite Entity Framework 支持包访问它们。
托管集成
SQLite 托管集成将 SQLite 数据库建模为 SQLiteResource 类型,并将在指定位置创建数据库文件。 访问允许添加 📦 CommunityToolkitAspire 的这些类型和 API。AppHost 项目中的 Hosting.SQLite NuGet 包。
dotnet add package CommunityToolkit.Aspire.Hosting.SQLite
有关详细信息,请参阅 dotnet add package 或 管理 .NET 应用程序中的软件包依赖关系。
添加 SQLite 资源
在 AppHost 项目中,使用 AddSQLite 扩展方法注册和使用 SQLite 集成,以将 SQLite 数据库添加到应用程序生成器。
var builder = DistributedApplication.CreateBuilder(args);
var sqlite = builder.AddSQLite("my-database");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(sqlite);
将 SQLite 数据库添加到 AppHost 时 Aspire ,如前面的示例所示,它会在用户临时目录中创建新的 SQLite 数据库文件。
或者,如果要为 SQLite 数据库文件指定自定义位置,请向 AddSqlite 方法提供相关参数。
var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");
添加 SQLiteWeb 资源
添加 SQLite 资源时,还可以添加 SQLiteWeb 资源,该资源提供 Web 界面来与 SQLite 数据库交互。 为此,请使用 WithSqliteWeb 扩展方法。
var sqlite = builder.AddSQLite("my-database")
.WithSqliteWeb();
此代码基于 ghcr.io/coleifer/sqlite-web AppHost 添加一个容器,该容器提供一个 Web 接口,用于与连接到的 SQLite 数据库进行交互。 每个 SQLiteWeb 实例都连接到单个 SQLite 数据库,这意味着,如果添加多个 SQLiteWeb 实例,将有多个 SQLiteWeb 容器。
添加 SQLite 扩展
SQLite 支持可添加到 SQLite 数据库的扩展。 可以通过 NuGet 包或通过磁盘上的位置提供扩展。 使用 WithNuGetExtension 或 WithLocalExtension 扩展方法将扩展添加到 SQLite 数据库。
注意
SQLite 扩展支持被视为试验性,并生成 CTASPIRE002 警告。
Client 集成
若要开始使用 Aspire SQLite EF 客户端集成,请在使用 SQLite 客户端的应用程序项目中安装 📦 CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite NuGet 包。 SQLite 客户端集成注册了一个可用于与 SQLite 交互的 SqliteConnection 实例。
dotnet add package CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite
添加 Sqlite 客户端
在客户端使用项目的 Program.cs 文件中,对任何 AddSqliteDbContext 调用 IHostApplicationBuilder 扩展方法,以注册 DbContext 子类,以便通过依赖项注入容器使用。 该方法采用连接名称参数。
builder.AddSqliteDbContext<YourDbContext>(name: "sqlite");
提示
参数 name 必须与在 AppHost 项目中添加 SQLite 资源时使用的名称匹配。 有关详细信息,请参阅 添加 SQLite 资源。
将 YourDbContext 添加到生成器后,可以使用依赖项注入获取 YourDbContext 实例。 例如,若要从示例服务中检索数据源对象,请将其定义为构造函数参数,并确保 ExampleService 类注册到依赖项注入容器:
public class ExampleService(YourDbContext context)
{
// Use context...
}
有关依赖项注入的详细信息,请参阅 .NET 依赖项注入。
扩充 SQLite 数据库上下文
你可能更喜欢使用标准 Entity Framework 方法获取数据库上下文并将其添加到依赖项注入容器:
builder.Services.AddDbContext<YourDbContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));
注意
传递给方法的 GetConnectionString 连接字符串名称必须与在 AppHost 项目中添加 SQLite 资源时使用的名称匹配。 有关详细信息,请参阅 添加 SQLite 资源。
配置
SQLite 客户端集成提供了多种配置方法和选项,以满足项目的要求和约定。
使用连接字符串
使用 ConnectionStrings 配置部分中的连接字符串时,可以在调用 Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext 方法时提供连接字符串的名称:
builder.AddSqliteDbContext<YourDbContext>("sqlite");
然后,将从 ConnectionStrings 配置部分检索连接字符串。
{
"ConnectionStrings": {
"sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
}
}
使用配置提供程序
SQLite 客户端集成支持 Microsoft.Extensions.Configuration。 它通过使用 Microsoft.Extensions.Hosting.SqliteConnectionSettings 键从 appsettings.json 或其他配置提供器加载 Aspire:Sqlite:EntityFrameworkCore:Sqlite。 配置某些选项的示例 appsettings.json:
{
"Aspire": {
"Sqlite": {
"EntityFrameworkCore": {
"Sqlite": {
"ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
"DisableHealthCheck": true
}
}
}
}
}