How to use FreeText in EF core 2.1

我是研究僧i 提交于 2019-11-29 02:13:03

First make sure you have the relevant packages installed Microsoft.EntityFrameworkCore and Microsoft.EntityFrameworkCore.SqlServer.

Then ensure you have the following import:

using Microsoft.EntityFrameworkCore;

Now you can use the FREETEXT SQL function like this:

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

Note: You can see how this works in the unit tests, for example.

To create the full text index, there is currently no support for doing this automatically in Entity Framework Core. Instead, you need to manually add the code to the migration. So, create a migration as you normally do, open it up and add lines similar to this:

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);

Note the 2nd parameter in the call to Sql to suppress transactions. If you omit that you may get an error stating:

CREATE FULLTEXT CATALOG statement cannot be used inside a user transaction

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!