Я использую провайдер 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
(первая часть - это число дней, а дробь содержит дневные часы).