2012-02-22 97 views
0

我無法通過DateTime屬性查詢任何對象。WCF WebApi IQueryable不適用於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,都拋出錯誤消息。

這裏的(通過的WebAPI)生成的URL按ID查詢(作品):

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

這裏的產生通過時間戳查詢URL(不工作):

/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. 

問:有什麼可以做,而無需單獨查詢每個部分查詢日期時間屬性?

+0

MyModel是否標記爲DataContract,是否正確DateTime屬性是TimeStamp? – 2012-02-22 21:40:27

+0

它未標記爲DataContract。 TimeStamp是Propery的名稱(用於此演示的目的),DateTime是類型。 – joelnet 2012-02-22 23:54:46

+0

它應該是一個DataContract。至於時間戳 - 當然:)。 – 2012-02-23 00:03:10

回答

2

儘量避免序列化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格式(文化不變,穩定的格式)。

+1

好吧,這是幾個月,我仍然無法解決這個問題。我相信DateTime可能不支持IQueryable。我修改了我的IQuerable方法,將datetime作爲字符串接受。 – joelnet 2012-12-11 00:10:28