我正在尝试简单的全文搜索:
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; }
}
替代方式:
var dbquery = _dbContext.Contents
.Where(c => EF.Functions.FreeText(EF.Property<string>(c, "Content"), "a"));