Недавно я работал с OData .Net Client. Я использую класс DataServiceContext в качестве клиента. Чтобы получить данные, я использую LINQ to OData Query. Проблема заключается в том, что LINQ отображает значение поля типа времени (не datetime, а время) f.ex. DocTime поле:Сопоставление значения поля времени в запросе LINQ to OData
Запрос LINQ:
IQueryable<Document> query = CurrentServiceContainer.Orders.Where(e => e.DocTime >= new DateTime(2017, 1, 1, 12, 0, 0));
отображается следующим OData запроса:
"https://$HOST_ADDRESS$/b1s/v1/Orders()?$filter=DocTime ge datetime'2017-01-01T12:00:00'" (query.ToString())
, исполнение которых дает следующий результат:
{
"error" : {
"code" : -1000,
"message" : {
"lang" : "en-us",
"value" : "Query string error - the given value('datetime') of property 'DocTime' is of invalid time format"
}
}
}
Как вам может видеть, что значение поля времени DocTime отображается на «datetime'2017-01-01T12:00:00'
», что является неправильным форматом времени.
В соответствии с документацией значение этого поля shoud должно быть сопоставлено с «'2017-01-01T12:00:00'
» (без префикса «datetime»). Можно ли каким-либо образом изменить ODataQuery (путем настройки, обновления программного обеспечения или с помощью URI), чтобы получить желаемый результат без ошибок?
Не могли бы вы попытаться изменить тип с 'DateTime' на' DateTimeOffset'? – GWigWam