Как использовать FreeText в EF core 2.1 - PullRequest
0 голосов
/ 26 июня 2018

Я вижу, что в ядре Entity Framework 2.1 появилась новая функция для использования FREETEXT, но я не уверен, как ее использовать, поскольку нет примеров, которые я могу найти в Интернете.

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

Кто-нибудь еще использовал это и мог бы дать мне быстрый пример?

1 Ответ

0 голосов
/ 26 июня 2018

Сначала убедитесь, что у вас установлены соответствующие пакеты 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 нельзя использовать внутри пользовательской транзакции

...