SqlFunctions
является классом EF6 c и не может использоваться в EF Core. Пользовательские функции EF Core доступны как методы расширения EF.Functions
.
К сожалению, в настоящее время EF Core не обеспечивает эквивалент StringConvert
. Но его можно относительно легко добавить, используя EF Core Отображение скалярной функции базы данных и метод сопоставления STR
, аналогичный тому, что делал EF6.
Например, добавьте следующий класс ( с необходимыми using
s):
public static class SqlFunctions
{
public static string ToString(this decimal? value, int? length, int? decimalArg) => throw new NotSupportedException();
public static string ToString(this double? value, int? length, int? decimalArg) => throw new NotSupportedException();
public static ModelBuilder AddSqlFunctions(this ModelBuilder modelBuilder) => modelBuilder
.MapToSTR(() => ToString(default(decimal?), null, null))
.MapToSTR(() => ToString(default(double?), null, null));
static ModelBuilder MapToSTR(this ModelBuilder modelBuilder, Expression<Func<string>> method)
{
modelBuilder.HasDbFunction(method).HasTranslation(args =>
new SqlFunctionExpression(null, null, "STR", false, args, true, typeof(string), null));
return modelBuilder;
}
}
, затем внутри вашего OnModelCreating
переопределения:
if (Database.IsSqlServer()) modelBuilder.AddSqlFunctions();
затем внутри запроса замените
SqlFunctions.StringConvert(physianAggregaton.Performance_rate, 100, 2)
с
physianAggregaton.Performance_rate.ToString(100, 2)