问题标签 [asp.net-web-api-odata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2385 浏览

asp.net-web-api - odata 服务的 url 后缀“.svc”

这可能是一个愚蠢的问题,我对 ODATA 服务的后缀有点困惑.svc,因为我看到的大多数示例总是.svc在根 URL 处有后缀,例如:

http://services.odata.org/V4/Northwind/Northwind.svc/

甚至在ODATA 文档示例中:

在此处输入图像描述

在 ASP.NET Web Api 上构建 ODATA 时,我看到后缀.svc实际上并不是强制性的,如果我们需要在路由配置中添加它,我们可以添加它。

那么.svc为构建 ODATA 服务而在根 URL 中添加后缀的目的是什么,或者只是约定这是 ODATA服务

0 投票
1 回答
378 浏览

rest - OData 查询:根据列条件获取多行

我有一个包含属性字段及其相应值的表。对于一个实例,有几个属性是适用的,我想为这个实例返回一组特定的属性。

如何使用 Odata 查询以获取属性 A 和 C 及其对应值?

截至目前,我只能用$filter=endswith(Attribute, 'A').

0 投票
1 回答
324 浏览

mongodb - oData 的 skip() 和 top() 在过滤前拉取整个记录集

我有一个启用 oData 的 web api 功能

服务层调用基于 Mongodb 的 Repository 模式的实现。

其中 GetAll 在 Repository 层中实现,例如

其中 _collection 是 c# 驱动程序的 MongoCollection。

当我打电话时

我得到前 10 条记录,但它从数据库中提取所有记录并将我送回前 10 条。请指导我们如何从数据库中仅提取所需的集合。

0 投票
1 回答
396 浏览

odata - 从启用 oData 的 web api 获取计数 获取函数

我有一个启用了 oData 的经典 REST Web api 控制器,它具有类似的 Get 功能

我需要了解如何拨打电话以仅使用某些 url 获取记录数

我试过了

但我明白了

消息:“不支持查询参数 '$count'。”

请注意,我使用的是返回 IQueryable 集合的 MongoDb。

0 投票
1 回答
238 浏览

c# - 尝试从 MongoDB 存储库跳过和获取时溢出排序阶段缓冲数据使用

我有一个经典的支持 REST 和 ODATA 的 Web API 控制器,它调用基于 MongoDB 的存储库模式实现。

我不断得到

溢出排序阶段缓冲数据使用量 33556193 字节超出内部限制 33554432 字节异常

当我尝试跳过前 12010+ 条记录并获得前 10 名时

经过一番搜索后,我尝试在 Serial 上实现索引,例如

我的存储库实现是这样的。

来自服务层的调用是这样的

其中 SNDbContext 包含与使用 MongoClient 和连接字符串获取数据库相关的所有代码。

0 投票
1 回答
134 浏览

asp.net-web-api - 在没有 MapODataServiceRoute 的情况下使用 $inlinecount

我有一个控制器 1继承的表单 ApiController 返回某个实体的 IQueryable。

我有另一个控制器 2返回相同的东西,但继承了 ODataController 和 oData 路由配置,如下所示

当我尝试运行http://localhost:xxxx/api/Controller1 ?$inlinecount=allpages&$top=0 我得到空白 json 对象结果

当我尝试运行http://localhost:xxxx/api/Controller2 ?$inlinecount=allpages&$top=0 时,我得到了 odata.count = 100 的正确结果

我的问题是控制器 1 有什么问题?

最终我试图只得到计数

0 投票
1 回答
492 浏览

angularjs - 在 Api Controller 和 oData Controller 与 Angular 的 ngresource 一起使用时感到困惑

我有一个调用 web api 的 Angular 应用程序。在我需要计算结果之前,它可以与 web api 控制器和 ngresource 一起正常工作。

要获得结果的计数,我需要使用 $inlinecount ,它似乎只与 oDataController 一起使用。有了 oDataControlelr,我的承诺就不起作用了。

我明白了

请指导。

0 投票
1 回答
107 浏览

asp.net-web-api-odata - 有没有办法防止将默认 ODataMediaTypeFormatters 添加到配置中?

我正在尝试自定义标准 ODataMediaTypeFormatter 的行为,并通过将它们包装在另一种扩展 MediaTypeFormatter 的类型中来做到这一点。例如

WebAPI 配置方法执行后,config.Formatters 包含 12 项(其中 7 项是包装的格式化程序)。

但是,当响应被序列化时,config.Formatters 包含 17 个项目,因为标准 OData 格式化程序已在某些时候重新添加。然后优先使用相关的标准格式化程序而不是包装版本。

有谁知道这种重新添加何时发生以及是否/如何防止它?

0 投票
2 回答
7566 浏览

.net - 使用 OData $select 从相关对象中挑选字段

我将 WebAPI 2.2 与 OData V4 一起使用。

我可以使用$filter=RelatedObj/PropertyName eq 'Some Value'基于相关对象属性值过滤实体列表。

但是,当我尝试使用相同的语法时$select

导致异常:

这可以解决吗?

0 投票
1 回答
1998 浏览

c# - 在 asp.net web api 中支持@odata.bind(在发布期间链接到现有实体)

我很难从 WCF 数据服务迁移到 web api odata v4。我被困在以下问题上:

odata web api 似乎不支持@odata.bind。

我找到了以下链接: https ://github.com/OData/WebApi/issues/158 有人建议ODataEntityDeserializer像这样实现自己的派生类:

LinkedEntityCollection 是我的实体类的基类,用作字典(MyEntity : LinkedEntityCollection实现很简单)。

在 http 配置中注册:

但是,如果您确实使用此 hack,您将失去在实体之间创建链接的能力,如本文所述:http ://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/ odata-v4/实体关系-in-odata-v4

“@odata.id”没有被解析,假设它是函数中的一个实体ODataEntityDeserializer.Read。也许我在这里基本上遗漏了一些东西,因为我对 web api 相当陌生(config.Formatters.Clear()似乎有点苛刻)。或者是否有任何其他解决方法来支持@odata.bind?

这个功能有没有可能在不久的将来实现?

更新

我得到了我的黑客工作。问题是我应该派生ExtendedODataDeserializerProviderDefaultODataDeserializerProvider不是相应地ODataDeserializerProvider返回反序列化器:

所以剩下的问题是:我们什么时候在 asp.net webapi odata 中获得@odata.bind 支持?