You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core迁移SQLite时加载Trigram分词器失败如何解决?

解决SQLite trigram分词器加载问题(EF Core 3.1.8 + UWP)

问题根源

直接执行SQL正常但迁移失败,是因为EF Core使用的SQLite连接默认未加载trigram分词器扩展模块,而你手动执行SQL时的SQLite环境已经预先加载了该扩展。

解决步骤

1. 安装适配UWP的SQLite扩展包

通过NuGet安装包含trigram扩展的SQLite兼容包,推荐使用SQLitePCLRaw.bundle_e_sqlite3,它整合了常用扩展且适配UWP环境:

Install-Package SQLitePCLRaw.bundle_e_sqlite3 -Version 2.0.5

(注:选择与EF Core 3.1.8兼容的版本,2.0.x系列适配性更稳定)

2. 在DbContext中显式加载扩展

重写DbContext的OnConfiguring方法,在数据库连接初始化后加载trigram扩展:

using Microsoft.EntityFrameworkCore;
using SQLitePCL;

public class YourDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("你的数据库连接字符串");
        
        // 指定SQLite提供器并加载trigram扩展
        raw.SetProvider(new SQLite3Provider_e_sqlite3());
        var connectionHandle = this.Database.GetDbConnection().Handle;
        SQLitePCL.raw.sqlite3_load_extension(
            connectionHandle,
            "sqlite3_trigram",
            null,
            out var loadError);

        if (!string.IsNullOrEmpty(loadError))
        {
            throw new InvalidOperationException($"加载trigram扩展失败:{loadError}");
        }
    }
}

3. 调整迁移类(可选)

如果上下文初始化的加载逻辑在迁移执行阶段未生效,可在迁移的Up方法中先执行扩展加载命令(部分环境支持该SQL语句,优先使用代码加载方式):

public partial class FTSFirstMigration : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        // 先加载扩展(仅在代码加载方式失效时尝试)
        migrationBuilder.Sql("LOAD_EXTENSION 'sqlite3_trigram';");
        // 创建FTS5虚拟表
        migrationBuilder.Sql("CREATE VIRTUAL TABLE ProductFTS USING fts5(search, tokenize=\"trigram\");");          
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropTable(name: "ProductFTS");
    }
}

4. UWP环境额外注意事项

  • 确保UWP应用包清单未限制本地库加载权限(默认允许,若有自定义权限需调整)。
  • 避免使用自行编译的SQLite库,优先依赖NuGet提供的预编译适配包,否则可能出现扩展加载失败。

验证

完成配置后,运行Update-Database命令执行迁移,此时创建虚拟表的SQL应能正常执行。

内容的提问来源于stack exchange,提问作者Sayansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:37:31