Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?

Сообщение Anonymous »

Я использую EF Core 8 в приложении .NET 9 с базой данных PostgreSQL.
У меня есть объект, у которого есть объект значения диапазона дат, определенный как свойство.
Объект значения:

Код: Выделить всё

public record DateRange
{
private DateRange()
{
}

public DateOnly Start { get; init; }
public DateOnly? End { get; init; }

public int LengthInDays => End.HasValue ? End.Value.DayNumber - Start.DayNumber : int.MaxValue;

public static DateRange Create(DateOnly start, DateOnly? end)
{
if (start == default)
throw new ArgumentException("Start date cannot be empty.", nameof(start));

if (end.HasValue && start > end.Value)
throw new ApplicationException("End date precedes start date");

return new DateRange
{
Start = start,
End = end
};
}

public bool IsWithinRange(DateOnly date)
{
return date >= Start && (!End.HasValue || date  x.ValidityDateRange);
Вот предложение Where, с которым у EF возникают проблемы:

Код: Выделить всё

.Where(c => c.ValidityDateRange.Start = currentDate)
Вот сообщение об ошибке, которое я получаю, когда EF пытается оценить мой запрос:

Выражение LINQ 'DbSet()

.Where(c => !(c.IsDeleted))

.Where(c => (int)c.Status == 1 &&
c.ValidityDateRange.IsWithinRange(__currentDate_0))' не удалось перевести. Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь на оценку клиента, вставив вызов AsEnumerable, AsAsyncEnumerable, ToList или ToListAsync. Дополнительную информацию см. на https://go.microsoft.com/fwlink/?linkid=2101038.


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как заставить ассемблер переводить инструкции в двоичный формат
    Anonymous » » в форуме JAVA
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Добавление сложных объектов в .NET Core
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Транслитерация API для Android или PHP [НЕ ПЕРЕВОДИТЬ]
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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