如何在 EF core 2.1 中使用 FreeText
How to use FreeText in EF core 2.1
我看到 Entity Framework 核心 2.1 有一个新功能可以使用 FREETEXT
,但我不确定如何使用它,因为我在网上找不到示例。
https://github.com/aspnet/EntityFrameworkCore/issues/11484
有没有人用过它并能给我一个简单的例子?
首先确保安装了相关的软件包Microsoft.EntityFrameworkCore
和Microsoft.EntityFrameworkCore.SqlServer
。
然后确保您有以下导入:
using Microsoft.EntityFrameworkCore;
现在您可以像这样使用 FREETEXT
SQL 函数:
var results = context.Foos
.Where(f => EF.Functions.FreeText(f.ColumnName, "search text"));
注意:您可以在单元测试中看到它是如何工作的,for example。
要创建全文索引,Entity Framework Core 当前不支持自动执行此操作。相反,您需要手动将代码添加到迁移中。所以,像往常一样创建一个迁移,打开它并添加类似于这样的行:
Sql("CREATE FULLTEXT CATALOG ft AS DEFAULT", true);
Sql("CREATE FULLTEXT INDEX ON dbo.TableName(ColumnName) KEY INDEX UI_TableName_ColumnName WITH STOPLIST = SYSTEM", true);
请注意调用 Sql
中的第二个参数以抑制交易。如果省略,您可能会收到一条错误消息:
CREATE FULLTEXT CATALOG statement cannot be used inside a user transaction
我看到 Entity Framework 核心 2.1 有一个新功能可以使用 FREETEXT
,但我不确定如何使用它,因为我在网上找不到示例。
https://github.com/aspnet/EntityFrameworkCore/issues/11484
有没有人用过它并能给我一个简单的例子?
首先确保安装了相关的软件包Microsoft.EntityFrameworkCore
和Microsoft.EntityFrameworkCore.SqlServer
。
然后确保您有以下导入:
using Microsoft.EntityFrameworkCore;
现在您可以像这样使用 FREETEXT
SQL 函数:
var results = context.Foos
.Where(f => EF.Functions.FreeText(f.ColumnName, "search text"));
注意:您可以在单元测试中看到它是如何工作的,for example。
要创建全文索引,Entity Framework Core 当前不支持自动执行此操作。相反,您需要手动将代码添加到迁移中。所以,像往常一样创建一个迁移,打开它并添加类似于这样的行:
Sql("CREATE FULLTEXT CATALOG ft AS DEFAULT", true);
Sql("CREATE FULLTEXT INDEX ON dbo.TableName(ColumnName) KEY INDEX UI_TableName_ColumnName WITH STOPLIST = SYSTEM", true);
请注意调用 Sql
中的第二个参数以抑制交易。如果省略,您可能会收到一条错误消息:
CREATE FULLTEXT CATALOG statement cannot be used inside a user transaction