7

के साथ ओडाटा पथ के लिए एक क्रिया का चयन करने के लिए कोई रूटिंग सम्मेलन नहीं मिला था, मेरे पास दो ओडाटा एक्शन विधियों को परिभाषित किया गया है। पैरामीटर के साथ एक को बुलाया जाता है जबकि पैरामीटर के बिना अन्य को शामिल नहीं किया जाता है और त्रुटि फेंकता है कोई रूटिंग सम्मेलन टेम्पलेट '~/entityset' के साथ ओडाटा पथ के लिए कोई क्रिया चुनने के लिए नहीं मिला था।टेम्पलेट '~/entityset'

यहाँ मेरी कार्रवाई तरीकों

[EnableQuery] 
    public IQueryable<User> GetUser() 
    { 
     return db.Users; 
    } 

    // GET: odata/User(5) 
    [EnableQuery] 
    public SingleResult<User> GetUser([FromODataUri] int key) 
    { 
     return SingleResult.Create(db.Users.Where(user => user.Id == key)); 
    } 

क्वेरी है कि मैं उपयोग कर रहा हूँ के कोड के रूप में इस प्रकार है

http://bureauservice/api/odata/UserOdata - Doesnt work 
http://bureauservice/api/odata/UserOdata(1) - works 

कोई मुझे बता सकते हैं कर रहे हैं यही कारण है कि पहले लिंक काम नहीं करता है।

उत्तर

0

आप पहले यूआरएल के लिए कोष्ठक जोड़ सकते हैं:

http://bureauservice/api/odata/UserOdata() 

तुम सिर्फ OData proactise को शुरू कर रहे हैं, तो Odata v4, अच्छी शुरुआत है के रूप में यह एक नखलिस्तान मानक है, लेकिन v3 है नहीं।

यहां v4 संस्करण फ़ंक्शन नमूना है: http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataFunctionSample/

+0

लिंक टूटा हुआ है :( –

12

कृपया उस विधि का नाम बदलें जो इकाईसेट को "Get[EntitySetName]" या "Get" पर लौटाता है।

से बदलें

public IQueryable<User> GetUser() 

public IQueryable<User> GetUserOdata() 

या

public IQueryable<User> Get() 
2

करने के लिए के रूप में GetUsers (बहुवचन) पहली कार्रवाई के नाम पर सेट करें क्योंकि आप उन के पूरे संग्रह हो रही है जबकि दूसरे में आप एक उपयोगकर्ता के लिए पूछ रहे हैं।

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