EF Core中的等效SqlFunction.Difference

时间:2019-10-15 03:05:41

标签: c# entity-framework-core

我在EF6中有一个代码,想将其翻译为EF Core。 EF Core中等效的SqlFunction.Difference是什么?

  public virtual IEnumerable<Role> GetSimilarRoles(string soundsLike)
  {
            return Get(x =>  SqlFunctions.Difference(x.Name, soundsLike) >= 3, q => q.OrderBy(o => o.Name));
  }

2 个答案:

答案 0 :(得分:3)

当前,EF Core中没有与之相对应的即装即用产品。

但是可以使用EF Core 2.0+ Database scalar function mapping轻松添加,例如

public static class SqlFunctions
{
    [DbFunction("DIFFERENCE", "")]
    public static int? Difference(string s1, string s2)
        => throw new NotSupportedException();
}

流利的配置(对于未通过DbContext派生类公开的功能来说是必需的)

modelBuilder.HasDbFunction(() => SqlFunctions.Difference(default, default));

答案 1 :(得分:1)

我认为没有等效的选项,但是EF Core通过 EF.Functions

具有功能

https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbfunctions?view=efcore-3.0

public static bool Like (this Microsoft.EntityFrameworkCore.DbFunctions _, string matchExpression, string pattern);