EF2.1中的FreeText:不支持'FreeText'方法,因为查询已切换到客户端评估。

问题描述 投票:1回答:1

我正在尝试简单的全文搜索:

var dbquery = _dbContext.Contents
   .Where(c => EF.Functions.FreeText("Content", "a"));

var result = dbQuery.ToList();

但我得到:

InvalidOperationException:不支持'FreeText'方法因为查询已切换到客户评估。检查日志确定哪些查询表达式正在触发客户端评估。

也许需要注意的是,我正在使用继承:

public class MyDbContext : DbContext
{
    public DbSet<ForumThread> ForumThreads { get; set; }
    public DbSet<ForumPost> ForumPosts { get; set; }

    public DbSet<ContentBase> Contents { get; set; }
 }

public abstract class ContentBase
{
    public Guid Id { get; set; }
    public string Content { get; set; }
}

public class GenericContent : ContentBase
{        
    public virtual string Title { get; set; }
    public virtual ICollection<Tag> Tags { get; set; } = new List<Tag>();
}

public class ForumThread : GenericContent {}

public class ForumPost : ContentBase
{
    public ForumThread Thread { get; set; }
}
c# entity-framework-core asp.net-core-2.1
1个回答
0
投票

替代方式:

var dbquery = _dbContext.Contents
    .Where(c => EF.Functions.FreeText(EF.Property<string>(c, "Content"), "a"));
© www.soinside.com 2019 - 2024. All rights reserved.