WCF WebApi IQueryable не работает со свойствами DateTime - PullRequest
0 голосов
/ 22 февраля 2012

Мне не удалось запросить какой-либо объект по свойствам DateTime.

public class MyModel
{
    public int Id { get; set; }
    public DateTime TimeStamp { get; set; }
}


[ServiceContract]
public class BuildJobApi
{
    [WebGet]
    public IQueryable<MyModel> GetMyModels()
    {
        return _service.GetMyModels(); // IQueryable<MyModel>
    }
}

Я пытался использовать WCF WebApi v0.5.0 и 0.6.0, оба выдают сообщения об ошибках.

Вот URL, сгенерированный (WebApi) для запроса по Id (работает):

/api/models?$filter=(Id eq 100)

Вот URL, сгенерированный для запроса TimeStamp (не работает):

/api/models?$filter=TimeStamp ge DateTime'2012-02-22T00:00:00'

Я также могу запросить по дате часть (работы):

/api/models?$filter=(year(ExceptionDateTime) eq 2012)

Точное сообщение об ошибке 500 / Внутренняя ошибка сервера. С сообщением:

The server encountered an error processing the request. See server logs for more details.

В: Можно ли что-нибудь сделать, чтобы запросить свойства DateTime без запроса каждой части в отдельности?

1 Ответ

2 голосов
/ 12 апреля 2012

Старайтесь избегать сериализации DateTime, используйте для этого строку.

например:

public class MyModel
{
    public int Id { get; set; }
    public string TimeStamp { get; set; }
}

new MyModel { Id = 123, TimeStamp = DateTime.Now.ToString("o") };

"o" для формата ISO 8601 (культуральный инвариант, стабильный формат).

...