Web-Api OData控制器返回单个记录

3 asp.net endpoint odata asp.net-web-api

我有这样的OData-Controller(缩短代码):

    public class FooController : ODataController
    {
        [Queryable]
        public IEnumerable<Foo> Get()
        {       
            return ...;
        }

        [Queryable]
        public SingleResult<Foo> GetById([FromODataUri] int id)
        {
            return SingleResult.Create<Foo>(...);
        }
Run Code Online (Sandbox Code Playgroud)

/myprefix/foo在浏览器Get()中调用了该方法.

现在我/myprefix/foo(1)在浏览器中Get()调用方法总是被调用.但是我想调用这个GetById()方法.

我该GetById()怎么办?谢谢

Vla*_*and 6

我确认评论中提供的解决方案正在运行.

使用key作为参数名称更改方法参数:

public Unit GetBook([FromODataUri] int key)
{
    return db.Books.Single(b => b.BookID == key);
}
Run Code Online (Sandbox Code Playgroud)

并且它会接受这种请求,传递记录主键:

server/odata/Books(34)
Run Code Online (Sandbox Code Playgroud)