无法在WebApi OData中调用单个查询GET

时间:2017-09-26 08:08:52

标签: c# asp.net-web-api odata asp.net-web-api-routing

我有与OData控制器的web api。模型是

public class UserDto
{
   public int UserDtoId {get;set;}
   public string Name {get;set;}
}
控制器中的

我有两个方法

[EnableQuery]
public IQueryable<UserDto> Get();

[EnableQuery]
public SingleResult<UserDto> GetUser([FromODataUri] int key);

OData配置是:

      ODataModelBuilder builder = new ODataConventionModelBuilder();
   builder.EntitySet<UserDto>("Users").EntityType.HasKey(e=>e.UserDtoId).Name = "User";
  config.MapODataServiceRoute(
    routeName: "ODataRoute",
    routePrefix: "odata",
    model: builder.GetEdmModel());

当我尝试调用odata / Users(123)时,odata尝试首先调用get而不是使用键获取并返回表中的所有记录。当我注释掉第一个get方法时,根本没有用于此URI访问的GET方法。我犯错的地方?

我尝试使[ODataRoute]不会改变任何东西。

1 个答案:

答案 0 :(得分:0)

在您的代码中,您的两个功能是Get()GetUser(int key) 他们都应该是'Get'

也不确定是否重要,但对于Get(int),如果仍然无效,请尝试将SingleResult<UserDto>更改为UserDto