c# 4.0 - example - No se encontró ninguna convención de enrutamiento para seleccionar una acción para la ruta OData con la plantilla ''~/entityset''
odatacontroller (3)
Tengo dos métodos de acción Odata definidos. El uno con parámetro se invoca mientras que el otro sin parámetro no se invoca y arroja error. No se encontró ninguna convención de enrutamiento para seleccionar una acción para la ruta OData con la plantilla ''~ / entityset''.
Aquí está el código de mis métodos de acción
[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));
}
La consulta que estoy usando es la siguiente
http://bureauservice/api/odata/UserOdata - Doesnt work
http://bureauservice/api/odata/UserOdata(1) - works
¿Podría alguien decirme por qué el primer enlace no funciona?
Es posible que desee agregar el paréntesis a la primera URL:
http://bureauservice/api/odata/UserOdata()
Si está empezando a proactuar odata, entonces Odata v4 es un buen punto de partida, ya que es un estándar OASIS, pero v3 no lo es.
Aquí está la versión de la función v4 Ejemplo de función: http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v4/ODataFunctionSample/ .
Cambie el nombre del método que devuelve entityset a " Get[EntitySetName]
" u " Get
".
Cambiar de
public IQueryable<User> GetUser()
A
public IQueryable<User> GetUserOdata()
O
public IQueryable<User> Get()
Establezca el nombre de la primera acción como GetUsers
(plural) porque obtiene la colección completa de usuarios, mientras que en el segundo está solicitando un único usuario.