2015-02-09 72 views
0

我有OData v3,複合鍵和刪除項目的一些路由問題。我已經建立了我的控制器和實體(如下所示),並且可以對數據運行基本查詢(對GET進行過濾等)WebAPI OData v3複合鍵刪除

當我呼叫url http://localhost:62658/OData/ProductStockLimit(StockLimitGroupId=1,ProductRegexMatch=Test)與DELETE,但我不斷收到404消息「沒有HTTP資源被發現匹配的請求的URI」

我假設路由沒有采用這種方法,但我不知道爲什麼我的所有其他OData路由正在與刪除正常工作,我可以看到唯一的區別是,這是一個複合鍵。

其他人有這個問題嗎?

public class ProductStockLimit 
{ 

    [Key, Column(Order = 2)] 
    public string ProductRegexMatch { get; set; } 

    [Key, ForeignKey("StockLimitGroup"), Column(Order = 1)] 
    public int StockLimitGroupId { get; set; } 

    public virtual StockLimitGroup StockLimitGroup { get; set; } 

    [Column(Order = 3)] 
    public double Quantity { get; set; } 


} 


namespace Website.Areas.OData.Controllers 
{ 
    public class ProductStockLimitController : ODataController 
    { 
     [EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)] 
     public IQueryable<ProductStockLimit> Get() 
     { 

     } 

     public IHttpActionResult Post(ProductStockLimit item) 
     { 


     } 

     public HttpResponseMessage Delete([FromODataUri]int StockLimitGroupId,[FromODataUri] string ProductRegexMatch) 
     { 

     } 

    } 
} 

回答

1

從我看過的看來,OData v3實現似乎不能正確處理組合鍵。 This link有一個路由約定類,在應用時可以正確處理它們。

請注意,快速警告請勿將參數名稱「key」用於您的操作方法,因爲這會導致它嘗試在字典中添加另一個「key」元素以引發異常。