Я пытаюсь обновить решение до нового Core Framework 3.0.0.Теперь у меня небольшая проблема, которую я не понимаю.
Смотри, этот метод был без проблем в 2.2.6:
public async Task<IEnumerable<ApplicationUser>> GetBirthdayUsersCurrentMonth()
{
return await ApplicationDbContext.Users
.Where(x => x.Gender != ApplicationUser.GenderTypes.generic)
.Where(x => x.BirthDate.GetValueOrDefault().Month == DateTime.Now.Month)
.Where(x => x.RetireDate == null)
.OrderBy(x => x.BirthDate.GetValueOrDefault())
.ToListAsync();
}
Теперь в 3.0.0 я получаю ошибку Linqговоря это:
InvalidOperationException: выражение LINQ 'Где (источник: где (источник: DbSet, предикат: (a) => (int) a.Gender! = 0), предикат: (a) => a.BirthDate.GetValueOrDefault (). Month == DateTime.Now.Month) 'не удалось перевести.Либо переписать запрос в форме, которую можно перевести, либо явно переключиться на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsync ()
КогдаЯ отключаю эту строку:
.Where(x => x.BirthDate.GetValueOrDefault().Month == DateTime.Now.Month)
Ошибка исчезла, но, конечно, я получаю всех пользователей.И я не вижу ошибки в этом запросе.Может ли это быть ошибкой в EF Core 3.0.0?