Asp.net web api webapi odata上的新手

Asp.net web api webapi odata上的新手,asp.net-web-api,odata,asp.net-web-api-odata,Asp.net Web Api,Odata,Asp.net Web Api Odata,供应商要求将rest api公开为odata,试图了解它在odata世界中的工作原理,我的假设是数据模型以实体形式呈现,然后启用按查询字符串过滤,但odata查询如何在关系数据模型上工作,例如在客户订单上,我不能简单地加入整个customer和order表,然后返回整个数据集!(或者我可以将它们作为分页数据返回?)有人能指出一些设计ODataWebAPI的最佳实践吗?非常感谢!!谢谢 我猜,您正在使用实体框架作为OData的模型。 所以 将对多行获取执行此操作 基本上,$expand(在其他表上

供应商要求将rest api公开为odata,试图了解它在odata世界中的工作原理,我的假设是数据模型以实体形式呈现,然后启用按查询字符串过滤,但odata查询如何在关系数据模型上工作,例如在客户订单上,我不能简单地加入整个customer和order表,然后返回整个数据集!(或者我可以将它们作为分页数据返回?)有人能指出一些设计ODataWebAPI的最佳实践吗?非常感谢!!谢谢

我猜,您正在使用实体框架作为OData的模型。 所以

将对多行获取执行此操作

基本上,$expand(在其他表上连接)和$filter和$select是使用整个EF模型自动应用的

但如果您担心私有数据或安全数据会被公开,则必须应用预过滤。 返回Ok(myDb.Customers.Where(w=>w.CustomerId==myCustomerId))

Odata内置了一些设置,以避免返回10.000行。 您完全可以自由配置所有这些。但是,需要一些学习曲线,因为毕竟,您可能需要额外的建模和导航属性优化

此外,在OData控制器上,默认情况下有GET/POST/PUT/PATCH/DELETE方法,但也可能需要自定义必须定义的函数/操作

在Github上,微软有很多例子


MS提供了一个使用Web Api 2.2创建OData端点的简短教程。
return Ok(myDb.Customers)