Эквивалентная SqlFunction.Difference в EF Core - PullRequest
2 голосов
/ 15 октября 2019

У меня есть код в EF6, и я хотел бы перевести его на EF Core. Какой эквивалент SqlFunction.Difference в EF Core?

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

Ответы [ 2 ]

3 голосов
/ 15 октября 2019

В настоящее время в EF Core нет стандартного эквивалента.

Но его легко добавить с помощью EF Core 2.0+ Отображение скалярной функции базы данных , например,

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 голос
/ 15 октября 2019

Я не думаю, что есть эквивалентный доступный, однако 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...