EF Core 2.x вычитание даты / разница в Npgsql - PullRequest
0 голосов
/ 12 июня 2019

Я использую провайдер Npgsql версии 4.0.x и ef core 2.x. У меня есть следующие объекты со свойствами навигации:

public class Entity : ...
{
   .....
   public ICollection<OtherEntity> OtherEntities { get; set; }
}

public class OtherEntity : ... 
{
   ...
   public int Order { get; set; }
   public DateTimeOffset Date { get; set; }
}

Я пытаюсь выполнить следующий запрос:

var query = provider.Query<Entity>()
     .Select(x => new 
     { 
         Difference = (x.OtherEntities.OrderBy(y => y.Order).FirstOrDefault().Date 
- x.OtherEntities.OrderByDescending(y => y.Order).FirstOrDefault().Date).TotalDays
     })
     .FirstOrDefault();

Но это не работает :( Никаких предупреждений или чего-то еще, просто пропускает мой Select запрос. Я обнаружил, что в слое EF.Functions.DateDiff * по умолчанию скрыты функции DbFunctions, но они работают только при использовании поставщика SQL Server. Есть ли способ сделать это в Npgsql? Я попытался реализовать пользовательскую функцию базы данных с именем DATE_PART (которая является функцией Postgres), но она рассчитывает только дни / часы / месяц, и я не могу объединить их. Мне нужен формат TimeSpan.TotalDays (первая часть - это число дней, а дробь содержит дневные часы).

...