«Выражение LINQ не может быть переведено» с сравнением DateTime в запросе LINQ?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 «Выражение LINQ не может быть переведено» с сравнением DateTime в запросе LINQ?

Сообщение Anonymous »

Я новичок, который совсем недавно начал использовать EF Core 5 для проекта и сталкиваюсь с проблемой со следующим запросом: < /p>
TimeSpan bookTimeToLive = TimeSpan.FromHours(10);
IList? expiredBooks = dbContext.Value.Books.AsQueryable()
.Where(x => DateTime.UtcNow - x.UtcTimeStamp > bookTimeToLive)
.ToList();

// Get list of expired Books to remove them
dbContext.Value.RemoveRange(expiredBooks);
await dbContext.Value.SaveChangesAsync(cancellationToken);

< /code>
Моя цель состоит в том, чтобы удалить все книги, которые истекли (их временная метка пройдет количество времени, для которого я хочу отслеживать их). < /p>
При этом я получаю исключение: < /p>
The LINQ expression 'DbSet()
.Where(d => DateTime.UtcNow - d.UtcTimeStamp > __bookTimeToLive_0)' could not be translated. Either
rewrite the query in a form that can be translated, or switch to client evaluation explicitly by
inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See
https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
< /code>
После некоторого копания я понял, что это связано с тем, что EF не может проанализировать мое сравнение DateTime в SQL -запрос, поэтому я попытался использовать метод dbfunctions.datediffhour () от https://learn.microsoft.com/en-us/dotne ... microsoft_ EntityFrameWorkCore_sqlServerdBfunctionSextensions_datediffhour_microsoft_entityFrameworkCore_dbfunctions_system_datetime_system_dateTime _
Теперь проблема заключается в том, что, хотя у меня установлен и импортирован и импорт Nuget EF 5, я не могу получить доступ к одному из методов dbfunctions:


Ef.functions (без публичных методов):

Это, возможно, ошибка или я не использую эти классы правильно? Это правильный подход к тому, что я хочу достичь?
Ура! < /P>

Подробнее здесь: https://stackoverflow.com/questions/664 ... linq-query
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Выражение LINQ не может быть переведено при использовании Maxby
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Выражение LINQ не может быть переведено при использовании Maxby
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Ошибка EF: выражение LINQ не может быть переведено. Происходит с сгенерированным выражением, а не с кодом
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Дифференцировать, если объект имеет тип DateTime или Nullable (DateTime?)
    Anonymous » » в форуме C#
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Не могу сравнить datetime.datetime с datetime.date
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»