如何使用EF核心为sqlite加载Trigram标记器?

5anewei6  于 2023-03-30  发布在  SQLite
关注(0)|答案(1)|浏览(130)

我正在将Microsoft.EntityFrameworkCore 3.1.8与我的UWP应用程序配合使用。
我需要使用Entity framework core和Code first方法运行这个sqlite查询:

CREATE VIRTUAL TABLE TrialFTS USING fts5(search, tokenize="trigram");

这直接在sqlite数据库中执行,没有任何错误,并且工作正常。
但是当我在迁移中使用它时:

public partial class FTSFirstMigration : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.Sql("CREATE VIRTUAL TABLE ProductFTS USING fts5(search, tokenize=\"trigram\");");          
        }

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

它失败并抛出错误:SQLite Error 1: 'no such tokenizer: trigram'

如何解决?如何将这个tokenizer模块显式加载到sqlite数据库中?

piok6c0g

piok6c0g1#

据报道,here于2020年12月1日在Sqlite 3.34.0中添加了标记器。
您可以检查当前使用的版本

select sqlite_version();

相关问题