webapi odata 新手

Newbie on webapi odata

供应商要求将其余部分 api 公开为 odata,试图了解它在 odata 世界中的工作方式,我的假设是数据模型将自己呈现为实体,然后启用按查询字符串进行过滤,但是如何odata 查询是否适用于关系数据模型,例如在客户订单上,我不能简单地加入整个客户并订购 table 然后 return 整个数据集! (或者也许我可以 return 它们作为分页数据?)有人可以指出一些设计 odata webapi 的最佳实践吗?非常感激!!谢谢!!!

我猜,您正在使用 Entity Framework 作为 OData 的模型。 所以

return Ok(myDb.Customers)

可以实现多行提取。

基本上,$expand(其他表上的 JOIN)和 $filter 以及 $select 是使用整个 EF 模型自动应用的。

但如果您担心隐私数据或安全数据会被泄露,则必须应用预过滤。 return 好的(myDb.Customers.Where(w => w.CustomerId == myCustomerId))

Odata 内置设置以避免它达到 return 比如说 10.000 行。 你可以很自由地配置这一切。但需要一些学习曲线,因为毕竟,您可能需要额外的建模和导航 属性 优化。

此外,您在 OData 控制器上默认具有 GET/POST/PUT/PATCH/DELETE 方法,但您可能还需要必须定义的自定义 functions/actions。

在 Github 上,Microsoft 有相当多的样本。

https://github.com/OData/ODataSamples/tree/master/WebApi/v4