13

我看到 Entity Framework core 2.1 有一个新功能可以使用FREETEXT,但我不确定如何使用它,因为我在网上找不到任何示例。

https://github.com/aspnet/EntityFrameworkCore/issues/11484

有没有人用过它,可以给我一个简单的例子吗?

4

1 回答 1

22

首先确保您已经安装了相关的软件包Microsoft.EntityFrameworkCore并且Microsoft.EntityFrameworkCore.SqlServer.

然后确保您具有以下导入:

using Microsoft.EntityFrameworkCore;

现在您可以FREETEXT像这样使用 SQL 函数:

var results = context.Foos
    .Where(f => EF.Functions.FreeText(f.ColumnName, "search text"));

注意:您可以在单元测试中看到它是如何工作的,例如.

要创建全文索引,目前不支持在 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 语句不能在用户事务中使用

于 2018-06-26T16:40:35.240 回答