Сначала убедитесь, что у вас установлены соответствующие пакеты 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);
Обратите внимание на 2-й параметр в вызове Sql
для подавления транзакций. Если вы пропустите это, вы можете получить сообщение об ошибке:
Оператор CREATE FULLTEXT CATALOG нельзя использовать внутри пользовательской транзакции