Мне нужно найти последний сгенерированный элемент в таблице SQL.
К сожалению, по старым причинам я не могу отсортировать по любому другому столбцу, кроме строкового столбца (RawValue
).
Кроме того, я не могу отсортироватьв этом столбце как строка , но мне нужно проанализировать его как Integer .
MyEntity myEntity = await _dbContext.MyEntity
.AsNoTracking()
.Where(...) // irrelevant
.OrderByDescending(n => int.Parse(n.RawValue)).FirstOrDefaultAsync();
. Entity Framework сгенерировал эти предупреждения, которые развиваются вокруг приведенного выше оператора.
Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning ":: Выражение LINQ 'orderby Parse ([sn] .RawValue) desc' не может быть переведено и будет оцениваться локально.
Microsoft. EntityFrameworkCore.Query.QueryClientEvaluationWarning ":: Не удалось перевести выражение LINQ 'FirstOrDefault ()', и оно будет оценено локально.
Как выполнить это на стороне сервера с помощью каркаса сущностей?
Модель
public class MyEntity
{
// ctors..
public int Id { get; private set; }
[MaxLength(32)]
public string RawValue { get; private set; }
// more irrelevant properties..
}
Информация о версии
dotnetcoreapp2.2 EF Core не имеет прямой ссылки, но включаетдобавлено в <PackageReference Include="Microsoft.AspNetCore.App" />
Решение Я только что подтвердил, что Convert.ToInt32(string)
делает то, что int.Parse(string)
не делает. Он генерирует ORDER BY CONVERT(int, column) ..
оператор SQL.