如何在EF core 2.1中使用FreeText

时间:2018-06-26 16:24:13

标签: c# entity-framework entity-framework-core freetext

我看到Entity Framework core 2.1具有可以使用FREETEXT的新功能,但是由于无法在网上找到示例,因此我不确定如何使用它。

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

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

1 个答案:

答案 0 :(得分:10)

首先请确保已安装Microsoft.EntityFrameworkCoreMicrosoft.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语句不能在用户事务内使用