2013-09-10 23 views
1

我想返回一個匿名類型,並且爲此我使用HttpResponseMessage,但結果是代碼406 Not Acceptable。這是我的代碼在OData中返回HttpResponseMessage行動

在WebApiConfig

modelBuilder.EntitySet<Groups>("Groups"); 
var getComplete = modelBuilder.Entity<Groups>().Collection.Action("GetComplete"); 
getComplete.Returns<HttpResponseMessage>(); 

在控制器

[HttpPost] 
[Queryable] 
public HttpResponseMessage GetComplete(ODataActionParameters parameters) 
{ 
     return this.Request.CreateResponse(HttpStatusCode.OK,db.Groups.Select(c => new 
     { 
      ID = c.ID, 
      DocumentType= c.DocumentType, 
      Name = c.Name ,    
      Debits = c.GroupMvtos.Sum(cm => cm.Debits) ?? 0, 
      Credits = c.GroupMvtos.Sum(cm => cm.Credits) ?? 0 
     }));    
} 

隨着ApiController爲使用基地班HTTPGET方法工作得很好,但在EntitySetController OData的行動沒有。

任何想法?

謝謝。

回答

1

OData操作無法返回匿名對象。該行爲返回的類型必須聲明爲服務EDM模型。

+0

那麼我如何返回像ApiController中的匿名對象的集合 – Jhonattan

+0

OData集合是同類和強類型的。所以,V3協議沒有辦法返回匿名對象。你能否聲明一個類型並使用它來代替匿名類型? –

+0

我不能因爲我需要可查詢性。我想在IQueryable <'a>中使用$ filter,$ top等,並只對數據庫進行一次調用,並且不會將結果解析爲強類型。我想只喜歡ApiController中的httpget方法,你可以做到這一點。 – Jhonattan

相關問題