我正在考虑使用全文搜索,但是关于如何使用EF Core 2.1进行100%不清楚。
似乎EF Core 2.1可能已经实现了对全文搜索的部分支持,但我没有找到有关如何实际使用它的任何教程。
我的理解是,我将不得不向其中一列添加全文索引。
所以如果我有这张桌子
if(self::exists()){
// Update
}else{
// insert
}
如何将全文索引添加到我的Name属性?
答案 0 :(得分:5)
您现在需要在迁移中使用SQL函数手动添加它们。
从EF Core 2.1开始,尚未创建全文索引。有关更多详细信息,请参见此问题跟踪器https://github.com/aspnet/EntityFrameworkCore/issues/11488。
总结;
在EF Core 2.1中,我们最初支持通过LINQ中的FreeText谓词来进行全文搜索,但这仅适用于已建立索引的数据库。 EF Core和SQL Server提供程序没有提供任何配置模型的方法,因此迁移或确保创建的索引可以生成用于定义索引的正确SQL。
从https://github.com/aspnet/EntityFrameworkCore/commit/2a6ccad8821f9360ae753bce41d63811185b8912的测试中提取的示例FreeText的C#Linq查询示例;
using (var context = CreateContext())
{
var result = await context
.Employees
.Where(c => EF.Functions.FreeText(c.Title, "Representative"))
.ToListAsync();
Assert.Equal(result.First().EmployeeID, 1u);
Assert.Equal(
@"SELECT [c].[EmployeeID], [c].[City], [c].[Country], [c].[FirstName], [c].[ReportsTo], [c].[Title] FROM [Employees] AS [c] WHERE FREETEXT([c].[Title], N'Representative')",
Sql,
ignoreLineEndingDifferences: true,
ignoreWhiteSpaceDifferences: true);
}