2014-11-11 13 views
6

के साथ वेब एपीआई नेविगेशन मैं Odata v3 एक समग्र कुंजी का उपयोग कर, कुछ संस्थाओं के साथ, इस तरह एक वेब एपीआई है:Odata v3 समग्र कुंजी

public class AerodromoAdministracaoData 
{ 
    [Key] 
    [Column("idAerodromo", Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public short IdAerodromo { get; set; } 

    [Key] 
    [Column("data", Order = 1, TypeName = "date")] 
    public DateTime Data { get; set; }  

    public virtual Aerodromo Aerodromo { get; set; } 
} 

मैं this msdn article and created a NavigationRoutingConvention का पालन किया। आवेदन समग्र कुंजी ठीक अब संभालती है। हालांकि, इस तरह नेविगेशन लिंक काम नहीं करते:

http://localhost/WebApiV3/AerodromoAdministracaoData%28idAerodromo=1,data=%272014-10-24%27%29/Aerodromo 

मैं बार आ रही है एक "कोई HTTP संसाधन पाया गया कि अनुरोध से मेल खाता" के रूप में अगर विधि नियंत्रक में लागू नहीं किया गया था। वैसे, इस नियंत्रक विधि है:

[EnableQuery] 
    public Aerodromo GetAerodromo([FromODataUri] short idAerodromo, [FromODataUri] DateTime data) 
    { 
     AerodromoAdministracaoData result = Store.AerodromoAdministracaoData.Find(idAerodromo, data); 
     if (result == null) 
     { 
      throw new HttpResponseException(new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.NotFound)); 
     } 
     return result.Aerodromo; 
    } 

मैं found this question बिल्कुल एक ही समस्या के बारे में बात है, लेकिन मैं समझ नहीं है कि कैसे Nikon मुद्दे को संभाला।

उत्तर

2

एडुआर्डो

MSDN लेख से Support Composite Key in ASP.NET Web API OData

public class CompositeKeyRoutingConvention : EntityRoutingConvention 
{ 
    .... 
} 

ऊपर मार्ग सम्मेलन निम्नलिखित उरी टेम्पलेट्स कवर कर सकते हैं:

  • ~/EntitySet/कुंजी
  • ~/EntitySet/कुंजी/
डाली 210

लेकिन, यह ~/EntitySet/कुंजी/नेविगेशन

को कवर नहीं कर सकते हैं ठीक सरल, बस

public class CompositeKeyRoutingConvention : NavigationRoutingConvention 
{ 
    ... 
} 

नीचे नीचे के रूप में NavigationRouteConvention से प्राप्त होता है डिबग जानकारी है: The debug information:

कृपया सुनिश्चित करें कि: अगर आप दोनों Uris का समर्थन चाहते हैं:

  • /AerodromoAdministracaoData% 28idAerodromo = 1, डेटा =% 272014-10-24% 27% 29
  • /AerodromoAdministracaoData% 28idAerodromo = 1, डेटा =% 272014-10-24% 27% 29/Aeródromo

आप दो कस्टम मार्ग सम्मेलनों, एक EntityRoutingConvention से ली गई, NavigationRoutingConvention से ली गई अन्य एक होना चाहिए।

आशा है कि यह कर सकते हैं। धन्यवाद।

संबंधित मुद्दे