В EF Core 2.1 добавлена поддержка FREETEXT
, о чем также говорилось в Как использовать FreeText в EF core 2.1 .Однако у меня другая проблема с использованием EF Core 2.2: FREETEXT
EF Core * поддерживает дочерние объекты?
public class Customer
{
public Name Name { get; set; }
public List<Address> Addresses { get; set; }
}
Имя является владельцем объекта (объекта значения), который отлично подходит для поиска:
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Адрес является дочерней сущностью:
public class Address
{
public string Street { get; set; }
public string Number { get; set; }
}
Этот поиск работает нормально:
query.Where(c => EF.Functions.Freetext(c.Name.FirstName, searchTerm) || EF.Functions.Freetext(c.Name.LastName, searchTerm)
Этот поиск не выполняется, поскольку окончательный термин не может быть переведен в SQL:
query.Where(c => EF.Functions.Freetext(c.Name.FirstName, searchTerm) || EF.Functions.Freetext(c.Name.LastName, searchTerm) || EF.Functions.Freetext(c.Addresses.First().Street, searchTerm)
Есть ли способ обойти это, или мне нужно будет использовать функцию SQL?Я попытался использовать оператор Select()
, но он также не может быть полностью переведен в SQL.