C# 等效的SqlFunction。EF核心中的差异

C# 等效的SqlFunction。EF核心中的差异,c#,entity-framework-core,C#,Entity Framework Core,我有一个在EF6的代码,并想把它翻译成EF核心。EF核心中的等效SqlFunction.差异是什么 public virtual IEnumerable<Role> GetSimilarRoles(string soundsLike) { return Get(x => SqlFunctions.Difference(x.Name, soundsLike) >= 3, q => q.OrderBy(o => o.Name));

我有一个在EF6的代码,并想把它翻译成EF核心。EF核心中的等效SqlFunction.差异是什么

  public virtual IEnumerable<Role> GetSimilarRoles(string soundsLike)
  {
            return Get(x =>  SqlFunctions.Difference(x.Name, soundsLike) >= 3, q => q.OrderBy(o => o.Name));
  }
公共虚拟IEnumerable GetSimilarRoles(类似字符串的声音)
{
返回Get(x=>SqlFunctions.Difference(x.Name,soundsLike)>=3,q=>q.OrderBy(o=>o.Name));
}

我不认为有同等的可用性,但是EF Core通过
EF.functions


目前,EF Core中没有现成的等效产品

但使用EF Core 2.0+可以轻松添加,例如

流畅的配置(对于未通过
DbContext
派生类公开的函数来说是必需的):


这是一个很好的。。。为非英语使用者提供模糊匹配甚至语音匹配的“有限”功能。更糟糕的是,它不能通过指数来加速。你用它干什么?全文搜索可能是一个更好的选择,而SQL Server 2016及更高版本中的R和Python支持允许您使用功能强大的模糊匹配库感谢您的回答
public static bool Like (this Microsoft.EntityFrameworkCore.DbFunctions _, string matchExpression, string pattern);
public static class SqlFunctions
{
    [DbFunction("DIFFERENCE", "")]
    public static int? Difference(string s1, string s2)
        => throw new NotSupportedException();
}
modelBuilder.HasDbFunction(() => SqlFunctions.Difference(default, default));