问题标签 [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.
c# - OData v4 客户端代码生成器 - 仅限某些端点
我正在使用OData v4 客户端代码生成器来生成 ODATA 提要。
它工作正常,但提要本身有数百个端点,我对它包装其中的一些很感兴趣。
有没有一种简单的方法可以将生成器更改为仅包含以 X 开头的端点?
asp.net-web-api - 具有自定义路由的 OData v4 未绑定函数
我创建了一个“实用程序”控制器,它没有绑定到任何模型并且只包含未绑定的函数。
我希望能够通过如下网址调用它:
odata/Utilities/SomeMethod()
现在我必须这样称呼它:
odata/SomeMethod()
如何为“实用程序”创建自定义路线?
我努力了:
我也试过:
但是这两个都会引发错误:
“控制器'Utilities'中操作'SomeMethod'的路径模板'Utilities/SomeMethod()'不是有效的OData路径模板。找不到段'Utilities'的资源。”
c# - 如何使用 OData v4 6.0.0 在 .NET 中进行嵌套的 OData 调用?
假设我的 WebApiConfig.cs 中有以下内容:
我有以下课程:
如何创建绑定到以下路由的 ODataController 操作方法?
当我尝试制定自定义路由约定时,我不断收到以下 ODataPath:
我试图得到这个:
注意:我使用的是 v4 OData 的 v6.0.0,因此某些路由与以前的版本有所不同。
c# - 当 OData 过滤器出现异常时,ActionFilter 异常 null
我有一个ActionFilterAttribute
用于记录请求的 WebApi2 项目。该过滤器在 webapiconfig 中定义为全局过滤器,并按预期根据请求调用。问题是,当 OData 抛出异常时(例如使用“$filter=a”调用它时),异常OnActionExecuted
为空(当我明确抛出异常时,它确实按预期给出了异常)。
我还有一个 RESTier 项目,其中异常通过并且不为空。所以我知道这是可以做到的。而且我确实使用了System.Web.Http.Filters
命名空间,所以我认为使用错误的过滤器不会有问题。
我试图ExceptionFilterAttribute
摆脱它,ActionFilterAttribute
但它只是没有被调用。我还检查了未在有效的项目和无效但似乎找不到的项目之间排列的 packageversions。
这是预期的行为吗?如果可以,可以覆盖吗?为什么它似乎在 RESTier 项目中起作用?
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 已作为依赖项添加到项目中。
我注意到请求正在发送到服务器并收到响应。上述错误的原因可能是什么?任何人都可以帮助我吗?
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”的产品。那么何时以及为什么应该使用导航和过滤?
c# - Simple.Odata.Client - Odata 补丁实体,仅将修改后的属性发送到服务器
我正在使用 Simple Odata Client 在 WPF 应用程序中执行 CRUD 操作。
我有一个父实体和一个子实体:
我有一个执行 crud 操作的类:
我将父实体属性绑定到标题控件。
和子实体到 DataGrid。
当我单击 GET 按钮时,将从 DB 中获取订单。然后我更改 Order 和 OrderLines 中的数据。然后我删除一个 OrderLine 并添加两个新的 OrderLine。
在我使用ObservarbleCollection
时,更改将自动从 UI 添加到 Source。
要求
当我单击“保存”按钮时,所有更改都应提交到服务器。(批量请求是首选)。
问题
如何通过 PATCH 请求仅将更改的实体发送到服务器,而不在标题和行中发送未修改的属性?
asp.net-web-api2 - 具有内部设置器的 OData 属性——例如 UpdateDate
我有一个名为“Animal”的类的模型。
“Animal”类有几个属性,但让我们关注以下属性:
- 创建日期
- 创建用户
在“动物”类中,我可以通过执行以下操作使 CreateDate 工作:
这让我可以通过将数据库中的默认值设置为“GetDate()”来在数据库中生成 CreateDate。
当外部调用者尝试在 OData 服务上“设置” CreateDate 字段时,它会忽略正在传递的数据。
这使它成为外部调用者的“只读”属性。
除了需要在 OData 服务器上设置 CreateUser = System.Threading.Thread.CurrentPrincipal.Identity.Name 之外,我需要执行类似于 CreateUser 的操作。
如果我尝试使用私有集,则 OData 服务根本不会公开该属性。
如果我尝试使用公共集,则外部调用者可以更改属性。
在“动物”构造函数中,我设置了内部 _CreateUser = System.Threading.Thread.CurrentPrincipal.Identity.Name
我不确定如何在服务器端设置它。
odata - 在 OData 中,有没有办法按数组中的第一个元素排序?
我有一个 OData 4 端点,用于在表格中显示数据。其中一列有一组从我的元素中的字符串数组连接的数据。有没有办法按数组中的第一个元素排序?
我的元素可能如下所示:
[
{
"FirstName": "John",
"MiddleNames": [
"Harry",
"Bobby",
"Sue"
],
"LastName": "Jones"
},
... more elements
]
我想按 MiddleNames[0] 订购。
谢谢您的帮助!$orderby上的文档充其量是稀疏的......
c# - 是否可以在 Asp.Net WebApi 项目中公开多个 Odata v4 端点
标题解释了要求。是否可以在单个项目中公开多个端点?
就像是:
因为我需要将功能分成多个组件。谁能帮我?
更新
目前我正在使用下面的代码来创建和公开 Odata 服务。
我想为每个组件公开单独的服务(在不同的命名空间下?)。