如何使用 OData WebAPI 操作 return 导航 属性
How to return navigation property with an OData WebAPI Action
我想知道如何使用 ODataWebApi 操作 return 导航 属性。
示例:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-routing-conventions
在上面的link中,他们提到了这个例子:
POST/entityset(key)/cast/action/Products(1)/Models.Book/CheckOut
其中结帐是操作。假设此 URL return 是一个具有导航 属性 的 Book 对象。
想象一下下面的 Book 结构:
预订
- 字符串名称
- 列出页面
页数
- 字符串名称
页面将被标记为导航 属性。
在我的例子中,每当我在 API 上触发 Post 调用时,我只会得到
预订
- 字符串名称
Pages 被排除在外。
下面的示例是上述内容的修改示例。基本上 api 得到了一个检查了一系列的书籍。
当我点击 URL: http://localhost:4448/api/v1/Books/Action.Checkout?$format=application/json;odata.metadata=full
我收到以下回复。它缺少实际页面.....只有页面的导航参考。
{
@odata.context: "HTTP://LOCALHOST:4448/API/V1/$METADATA#BOOK/$ENTITY"
@odata.type: "#Book"
@odata.id: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
@odata.editLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
ID@odata.type: "#Int64"
ID: 0
Name: null
Type@odata.type: "#BookTypeEnum"
Type: "Book"
CreationDate@odata.type: "#DateTimeOffset"
CreationDate: "0001-01-01T00:00:00-08:00"
ModifyDate@odata.type: "#DateTimeOffset"
ModifyDate: "0001-01-01T00:00:00-08:00"
Owner: null
Pages@odata.associationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES/$REF"
Pages@odata.navigationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES"
}
任何建议表示赞赏,
谢谢
D
解决方案是启用 OData 查询。为控制器中的函数指定 [EnableQuery]。这将使您能够 http://localhost:4448/api/v1/Books/Action.Checkout?$expand=Pages
我想知道如何使用 ODataWebApi 操作 return 导航 属性。
示例:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-routing-conventions
在上面的link中,他们提到了这个例子:
POST/entityset(key)/cast/action/Products(1)/Models.Book/CheckOut
其中结帐是操作。假设此 URL return 是一个具有导航 属性 的 Book 对象。
想象一下下面的 Book 结构:
预订 - 字符串名称 - 列出页面
页数 - 字符串名称
页面将被标记为导航 属性。
在我的例子中,每当我在 API 上触发 Post 调用时,我只会得到
预订 - 字符串名称
Pages 被排除在外。
下面的示例是上述内容的修改示例。基本上 api 得到了一个检查了一系列的书籍。
当我点击 URL: http://localhost:4448/api/v1/Books/Action.Checkout?$format=application/json;odata.metadata=full
我收到以下回复。它缺少实际页面.....只有页面的导航参考。
{
@odata.context: "HTTP://LOCALHOST:4448/API/V1/$METADATA#BOOK/$ENTITY"
@odata.type: "#Book"
@odata.id: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
@odata.editLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)"
ID@odata.type: "#Int64"
ID: 0
Name: null
Type@odata.type: "#BookTypeEnum"
Type: "Book"
CreationDate@odata.type: "#DateTimeOffset"
CreationDate: "0001-01-01T00:00:00-08:00"
ModifyDate@odata.type: "#DateTimeOffset"
ModifyDate: "0001-01-01T00:00:00-08:00"
Owner: null
Pages@odata.associationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES/$REF"
Pages@odata.navigationLink: "HTTP://LOCALHOST:4448/API/V1/BOOK(0)/PAGES"
}
任何建议表示赞赏, 谢谢 D
解决方案是启用 OData 查询。为控制器中的函数指定 [EnableQuery]。这将使您能够 http://localhost:4448/api/v1/Books/Action.Checkout?$expand=Pages