问题标签 [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 投票
0 回答
176 浏览

c# - OData v4 客户端代码生成器 - 仅限某些端点

我正在使用OData v4 客户端代码生成器来生成 ODATA 提要。

它工作正常,但提要本身有数百个端点,我对它包装其中的一些很感兴趣。

有没有一种简单的方法可以将生成器更改为仅包含以 X 开头的端点?

0 投票
2 回答
1730 浏览

asp.net-web-api - 具有自定义路由的 OData v4 未绑定函数

我创建了一个“实用程序”控制器,它没有绑定到任何模型并且只包含未绑定的函数。
我希望能够通过如下网址调用它:
odata/Utilities/SomeMethod()

现在我必须这样称呼它:
odata/SomeMethod()

如何为“实用程序”创建自定义路线?

我努力了:

我也试过:

但是这两个都会引发错误:
“控制器'Utilities'中操作'SomeMethod'的路径模板'Utilities/SomeMethod()'不是有效的OData路径模板。找不到段'Utilities'的资源。”

0 投票
1 回答
65 浏览

c# - 如何使用 OData v4 6.0.0 在 .NET 中进行嵌套的 OData 调用?

假设我的 WebApiConfig.cs 中有以下内容:

我有以下课程:

如何创建绑定到以下路由的 ODataController 操作方法?

当我尝试制定自定义路由约定时,我不断收到以下 ODataPath:

我试图得到这个:

注意:我使用的是 v4 OData 的 v6.0.0,因此某些路由与以前的版本有所不同。

0 投票
0 回答
123 浏览

c# - 当 OData 过滤器出现异常时,ActionFilter 异常 null

我有一个ActionFilterAttribute用于记录请求的 WebApi2 项目。该过滤器在 webapiconfig 中定义为全局过滤器,并按预期根据请求调用。问题是,当 OData 抛出异常时(例如使用“$filter=a”调用它时),异常OnActionExecuted为空(当我明确抛出异常时,它确实按预期给出了异常)。

我还有一个 RESTier 项目,其中异常通过并且不为空。所以我知道这是可以做到的。而且我确实使用了System.Web.Http.Filters命名空间,所以我认为使用错误的过滤器不会有问题。

我试图ExceptionFilterAttribute摆脱它,ActionFilterAttribute但它只是没有被调用。我还检查了未在有效的项目和无效但似乎找不到的项目之间排列的 packageversions。

这是预期的行为吗?如果可以,可以覆盖吗?为什么它似乎在 RESTier 项目中起作用?

0 投票
0 回答
818 浏览

c# - Simple.Odata 客户端:无法从程序集 Simple.OData.Client.V4.Adapter 加载 OData 适配器

我正在尝试使用 WPF 应用程序中的 Simple.Odata 客户端使用 Odata。

下面是我的代码:

当我运行应用程序时出现错误:

错误:

无法从程序集 Simple.OData.Client.V4.Adapter 加载 OData 适配器

内部异常:

{“无法加载文件或程序集 'Microsoft.OData.Core, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自异常HRESULT: 0x80131040)":"Microsoft.OData.Core,版本=6.15.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35"}

堆栈跟踪:

在 Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) 在 Simple.OData.Client.ODataClient.d__91.MoveNext() --- 堆栈跟踪结束先前引发异常的位置 --- System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult( ) 在 SimpleOdataClient.MainWindow.d__1.MoveNext()

注意:程序集 Microsoft.OData.Core 已作为依赖项添加到项目中。

我注意到请求正在发送到服务器并收到响应。上述错误的原因可能是什么?任何人都可以帮助我吗?

0 投票
1 回答
82 浏览

odata - o数据导航与过滤

使用导航时: http ://services.odata.org/V4/Northwind/Northwind.svc/Suppliers(1)/Products 或过滤:http ://services.odata.org/V4/Northwind/Northwind.svc/ Products?$filter=SupplierID eq 1

我将得到完全相同的结果,因此属于供应商“1”的产品。那么何时以及为什么应该使用导航和过滤?

0 投票
1 回答
1398 浏览

c# - Simple.Odata.Client - Odata 补丁实体,仅将修改后的属性发送到服务器

我正在使用 Simple Odata Client 在 WPF 应用程序中执行 CRUD 操作。

我有一个父实体和一个子实体:

我有一个执行 crud 操作的类:

在此处输入图像描述

我将父实体属性绑定到标题控件。

和子实体到 DataGrid。

当我单击 GET 按钮时,将从 DB 中获取订单。然后我更改 Order 和 OrderLines 中的数据。然后我删除一个 OrderLine 并添加两个新的 OrderLine。

在我使用ObservarbleCollection时,更改将自动从 UI 添加到 Source。

要求

当我单击“保存”按钮时,所有更改都应提交到服务器。(批量请求是首选)。

问题

如何通过 PATCH 请求仅将更改的实体发送到服务器,而不在标题和行中发送未修改的属性?

0 投票
2 回答
230 浏览

asp.net-web-api2 - 具有内部设置器的 OData 属性——例如 UpdateDate

我有一个名为“Animal”的类的模型。
“Animal”类有几个属性,但让我们关注以下属性:

  1. 创建日期
  2. 创建用户

在“动物”类中,我可以通过执行以下操作使 CreateDate 工作:

这让我可以通过将数据库中的默认值设置为“GetDate()”来在数据库中生成 CreateDate。
当外部调用者尝试在 OData 服务上“设置” CreateDate 字段时,它会忽略正在传递的数据。
这使它成为外部调用者的“只读”属性。

除了需要在 OData 服务器上设置 CreateUser = System.Threading.Thread.CurrentPrincipal.Identity.Name 之外,我需要执行类似于 CreateUser 的操作。

如果我尝试使用私有集,则 OData 服务根本不会公开该属性。
如果我尝试使用公共集,则外部调用者可以更改属性。
在“动物”构造函数中,我设置了内部 _CreateUser = System.Threading.Thread.CurrentPrincipal.Identity.Name

我不确定如何在服务器端设置它。

0 投票
1 回答
777 浏览

odata - 在 OData 中,有没有办法按数组中的第一个元素排序?

我有一个 OData 4 端点,用于在表格中显示数据。其中一列有一组从我的元素中的字符串数组连接的数据。有没有办法按数组中的第一个元素排序?

我的元素可能如下所示:

[ { "FirstName": "John", "MiddleNames": [ "Harry", "Bobby", "Sue" ], "LastName": "Jones" }, ... more elements ]

我想按 MiddleNames[0] 订购。

谢谢您的帮助!$orderby上的文档充其量是稀疏的......

0 投票
1 回答
1382 浏览

c# - 是否可以在 Asp.Net WebApi 项目中公开多个 Odata v4 端点

标题解释了要求。是否可以在单个项目中公开多个端点?

就像是:

因为我需要将功能分成多个组件。谁能帮我?

更新

目前我正在使用下面的代码来创建和公开 Odata 服务。

我想为每个组件公开单独的服务(在不同的命名空间下?)。