OData V4 属性 访问

OData V4 property access

我使用 Visual Studio 2015 Web API 2 项目和脚手架控制器("Microsoft OData V4 Web API Controller Using Entity Framework" 脚手架)创建了一个非常原始的 OData 网络服务。

我的模型中只有一个实体集:"Books"。 "Book" 实体有一个原始的 "Title" 字符串 属性.

我假设脚手架控制器会处理所有合法的 OData v4 请求,但事实似乎并非如此?

http://localhost:xxxx/OData/Books 作品(枚举具有所有属性的所有书籍 - 包括 "Title" 属性)

http://localhost:xxxx/OData/Books(1) 作品(列举了第一本书的所有属性,包括 "Title" 属性)

http://localhost:xxxx/OData/Books(1)/Title 不起作用 - 我收到 "No routing convention was found to select an action for the OData path with template '~/entityset/key/property" 错误,尽管请求是 100 % OData v4 投诉?

为什么不起作用?它不应该工作吗?需要什么才能让它发挥作用?

脚手架不会创建一个控制器来为所有合法的 OData v4 请求提供服务。

要检索 Book 实体的标题 属性,您必须向 BooksController 添加一个方法,如下所示:

public string GetTitleFromBook([FromODataUri] int key) 
{
    // Put appropriate method logic here.
}

参见 Routing Conventions in ASP.NET Web API 2 Odata 中的 "Querying a Navigation Property" 和 "Properties" 表格。

此外,考虑使用 $select query option 来限制您在响应实体的正常请求时获得的属性。例如:

GET http://localhost:xxxx/OData/Books(1)?$select=Title