问题标签 [odata-v4]

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 回答
330 浏览

asp.net - odata v4 Product({key})/GenerateVariants 路由配置错误

产品上有一个功能可以将变体生成为列表。目前它返回:

这是我的 WebApiConfig:

这是我在 ProductController 上的方法

我实际上希望我的 productController 生成 ProductVariants 列表。但我目前的错误是这样的:

我有点想知道应该调整什么来完成这项工作。

0 投票
1 回答
736 浏览

c# - 使用 OData 创建所需的导航属性

使用 OData,我们可以将IsNullable结构属性的值设置false为需要属性。

是否可以为导航属性做类似的事情?

我找到了可以将其设置为值的TargetMultiplicity属性,EdmNavigationPropertyInfo例如EdmMultiplicity.One. 我认为这会使它成为必需的(并且可能在幕后进行),但元数据中似乎没有任何内容表明它不可为空,因此消费者不会知道它是必需的。

我在运行时从数据库构建我的元数据和对象,而不是使用具体类型。

0 投票
2 回答
447 浏览

.net - 使用 Simple.Odata.Client 连接到 Odata V4 服务的异常

花了几个小时试图让最简单的场景工作,即使用相同的服务将客户端连接到 odata V4 服务以及我的本地 Odata 服务,而客户端只是拒绝连接。我在客户端的“会话”变量中不断收到 session.Adapter 异常。

我错过了什么??

var client = new ODataClient(" http://packages.nuget.org/v1/FeedService.svc/ ");

var packages = client .FindEntriesAsync("Packages?$filter=Title eq 'Simple.OData.Client'");

Adapter = 'odataClient._session.Adapter' 引发了“System.InvalidOperationException”类型的异常

0 投票
1 回答
763 浏览

c# - 使用 Simple.OData.Client 批量创建对象和与该对象的关系

我想使用 Simple.OData.Client 在一批中创建一个对象和一个关系,但我很难了解如何做到这一点。不使用批处理,我可以这样做:

但是当我尝试将它放入批处理时,我不能再使用第一次调用的返回来创建孩子,因为它还没有被制作出来。我尝试使用与创建对象相同的数据,但这不起作用,它只是在服务器上的 create rel 方法中提供了一个空键:

我需要批量执行此操作,因为我的数据库要求在插入数据时设置关系,因此需要在一个数据库事务中完成。

这在 Simple.OData.Client 中是否可行?如果没有,通常在 OData 中是否有可能?

0 投票
2 回答
1403 浏览

odata - Web API 2 Odata V4 PATCH 返回 404

我有这个控制器:

GET 有效,我得到结果,甚至可以对它们进行排序。但是当我执行 PATCH 请求时,我收到 404 错误,PATCH 请求:

请求网址:http://localhost:61240/odata/InvRecipientAutoInvoice(RecipientNumber%3D443%2CRecipientType%3D400)

  • 响应正文:

{ "error":{ "code":"","message":"没有找到与请求 URI 匹配的 HTTP 资源 ' http://localhost:61240/odata/InvRecipientAutoInvoice(RecipientNumber=443,RecipientType=400) ' .","innererror":{ "message":"在控制器 'InvRecipientAutoInvoice' 上找不到与请求匹配的操作。","type":"","stacktrace":"" } } }

  • 请求正文:

我在 ASP.net Web 项目(不是 MVC)中使用它,

寄存器是:

我错过了什么?

0 投票
0 回答
492 浏览

odata - 如何将 ODataUriResolver 添加到默认 ODataUriParser

我使用 OData-WebApi 和 ODataLib 创建了一个 OData v4 EndPoint。

我想将新的 ODataUriResolver 添加到 ODataWebApi 正在使用的默认 ODataUriParser 中。

我知道如何将自定义 ODataUriResolver 添加到 ODataUriParser 的新实例中,而不是添加到服务器正在使用的实例中。

有没有可以将新的 ODataUriResolver 添加到默认 ODataUriParser 的地方?有什么地方可以让我自己创建一个新的 ODataUriParser 吗?

非常感谢!

0 投票
1 回答
397 浏览

asp.net-web-api - 在 odata v4 api 中发布 DbGeography 数据类型

我从 DbGeography 数据类型收到的信息位于 Location 中。

我尝试了多个 POST,但似乎都没有成功添加 DbGeography 点。

关于如何做到这一点的任何想法?我尝试添加与返回的相同的内容(不起作用)并使用类型 + 坐标作为属性(如 odata 标准中定义的那样。

在另一个问题中,我发现这个Error getting value from 'WellKnownValue' on 'System.Data.Entity.Spatial.DbGeography,但这个解决方案似乎不够。

如果我要添加位置:“POINT(lat long)”,我可以使用以下方法生成数据(但我不知道如何)

0 投票
1 回答
388 浏览

asp.net-mvc-4 - 在 Visual Studio 2013 中添加 odata 版本 4 控制器脚手架

如何在 Visual Studio 2013 中添加 odata v4 控制器脚手架?我已经安装了 odatalib(5.6) 和所有依赖项并使用实体框架。我可以看到 odata 3 的选项,但找不到 odata 版本 4 的任何选项。我是这项技术的新手。请帮忙。

0 投票
1 回答
3269 浏览

c# - 如何对 OData 客户端进行单元测试?

我在服务器上使用 Web Api OData v4,在客户端使用OData Client 代码生成器。它工作正常,但我不知道如何在客户端上测试代码。

在服务器上,我公开了一个“Levels”dbSet。

这是客户端上的代码段:

我接受 T4 模板生成的 odata 容器作为构造函数的参数,以便能够以某种方式模拟它。

单元测试,这是我迷路的地方:

所以在这个单元测试中我只想测试GetRootLevels方法内部的逻辑,我不想做集成测试或自托管服务,我只想用内存数据测试方法。

如何模拟 OData 客户端生成的实际上是 DataServiceContext 类的类?

我正在使用起订量,但它可以是任何东西,(免费或至少包含在 VS 专业版中)

编辑:这是 ODataContainer 的实现(记住这是由 Odata 客户端自动生成的)

0 投票
1 回答
1028 浏览

exception-handling - OData WebApi 2 错误处理

在我的 Web 服务中,我覆盖了 ExceptionHandler,但我不清楚如何格式化异常以符合 OData 错误标准。也许我在接近它是错误的,因为我在网上找不到任何例子。

据我了解,使用 web api 2 有一个全局异常处理的概念,您可以使用自定义 ExceptionHandler 来处理服务中抛出的任何异常。Exception 仍应使用新的 IHttpActionResult() 更新 ExceptionContext.Result。如何将输入到 IHttpActionResult 的数据格式化为 OData 错误。

下面是 ExceptionHandler 的一个片段,我不知道如何使用正确的 OData HttpResponse 消息覆盖 context.Result。

任何建议表示赞赏,谢谢,D