问题标签 [simple.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 回答
828 浏览

dynamics-crm - 使用 Ms Dynamic 2016 Web API 插入的简单 Odata 返回 null

我正在使用简单的 Simple.Odata API 将新实体数据插入 Ms Dynamic CRM Web api 并使用以下代码片段

此代码片段创建了新的实体数据,但问题是 newcontactData 始终为空。根据文档 newcontactData 对象应该有新创建的对象数据。请参阅文档链接 https://github.com/object/Simple.OData.Client/wiki/Adding-entries

0 投票
2 回答
11050 浏览

dynamics-crm - CRM 不支持直接更新实体引用属性,请改用导航属性

我正在使用带有简单 OData 的 Ms Dynamic Web Api。我需要为链接实体添加新记录。

我正在使用以下代码片段并参考 https://github.com/object/Simple.OData.Client/wiki/Adding-entries-with-links上的文档

我得到了例外

CRM 不支持直接更新实体引用属性,请改用导航属性S

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 投票
2 回答
1003 浏览

c# - 如何在 Simple.OData.Client 中使用证书身份验证?

如何在 Simple.OData.Client 中进行证书认证?我有 X509Certificate2 我想在调用 api 时使用它。我使用 .net 框架 4.6。

我做了一些搜索,我知道可以通过 HttpClientHandler 添加。但我无法弄清楚如何做到这一点。下面是我的代码。

0 投票
0 回答
240 浏览

c# - 将 Xamarin 跨平台项目连接到 OData 服务

我正在使用 Visual Studio 2017 Xamarin 跨平台模板。这应该连接到 OData。所以我添加了这些 NuGet 包:

还没有错误。但:

根据xamarin 文档,我应该添加Simple.OData.Client. 添加后,Simple.OData.Client (v 4.26.0)我得到了共享项目中几乎所有类型的Reference to type 'Object' claims it is defined in 'System.Runtime', but it could not be found代码。CS7069

我做了一些谷歌搜索,发现了这个。我不知道在哪里添加。

我补充说System.Runtime,但这并没有做任何事情。

请将该解决方案视为具有 3 个项目的未更改 xamarin 跨平台解决方案。SharedProject,AndroidiOS

是否存在版本不匹配?如果是这样,这些参考的哪些版本相互兼容?

提前致谢 :)

0 投票
3 回答
1639 浏览

c# - 仅使用 Simple.OData.Client 更新某些属性

我正在使用 Simple.OData.Client 并且我想更新实体的某些属性。

假设我在 C# 中有以下课程:

我正在尝试像这样更新 propertyA:

我以此为例:https ://github.com/object/Simple.OData.Client/wiki/Updating-entries

我的问题是发送一个带有propertyA = test 但propertyB = null 的PUT 请求。它尝试为我不想更改的属性设置空值。

是否可以只更新某些属性并在 OData 请求中发送 HTTP PATCH?

0 投票
1 回答
434 浏览

c# - Microsoft Dynamics NAV - 创建 SalesOrder (Simple.OData.Client) 的新条目

我正在尝试使用 Microsoft Dynamics NAV 中的 Simple.OData.Client 通过 OData Web 服务发布新的 SalesOrder 条目。

有效

不幸的是,这不起作用,我不知道为什么:

我得到这个例外:

0 投票
1 回答
407 浏览

.net-core - 使用 Simple.OData.Client 动态语法投影到已知类型

Simple.OData.Client 具有类型化和动态(和基本)的语法。

我喜欢打字,但我不想建立我所有的类型。最后,我得到的结果真的只需要两种左右的类型。

但是我的查询需要更多类型来正确过滤结果。

所以我想使用动态语法。但我想将结果转换为我拥有的课程。

我可以轻松地手动执行此操作,但我想我会先看看 Simple.OData.Client 是否支持此功能,然后再为每个查询编写所有转换代码。

这是一些运行时没有错误的动态语法代码:

这是我希望工作的一个例子(选择一个新的客户端对象)

但不支持这种投影(我收到“有一些无效参数”错误)。

使用 Simple.OData.Client 的动态语法时,是否有办法支持投影到现有类?

0 投票
0 回答
1237 浏览

asp.net-core - OData 如何使用 Simple.Odata.V4.Client 插入带有相关数据的新记录

我正在使用使用 Microsoft.AspNetCore.Odata v7.4.0 NuGet 的 ASP.NET Core 3.1x API,并且我有一个使用 Simple.OData.V4.Client v5 的 ASP.NET Core 3.1v Web 客户端.12.0

我正在尝试从 Simple.Odata 客户端发布带有相关 LineItem 对象(主/详细信息)的 Order 对象。Order 对象被正确地传递给 API,但相关的 LineItem 集合却没有。

这是我的订单课程;

这是我的 OrderLineItem 类;

这是客户端网站应用程序的我的 ODataService 中的方法;

这是我在 Postman 中使用的 Order 对象的 json 和相关的 OrderLineItem 对象,它们与我的 API 一起正常工作。

当我使用 Postman 发布带有相关 OrderLineItems 的新订单时,我的 API 会很好地创建订单和相关的 OrderLineItem 记录。但是,当我使用 Simple.OData.V4.Client 发布时,会创建 Order 记录,但不会创建相关的 OrderLineItem 记录。

当我通过 Postman 发布记录时查看 OData API 控制器时,我可以看到 Order 对象与包含的 OrderLineItems 一起传入。

但是,当我在我的 Web 应用程序中使用 Simple.OData.V4.Client 时查看 OData API 控制器时,我看到 OrderLineItems 的计数为 0,因此 Simple OData 客户端没有发送相关的 OrderLineItem 记录,甚至虽然我可以在 Order 对象中看到它们,该对象传递给 Web 应用程序的 OData 服务中的 CreatreOrderAsync 方法。

因此,我必须假设我缺少简单 OData 客户端所需的东西以允许它包含相关记录,但是在查看简单 OData 客户端文档后,我找不到主/详细类型客户端 Post 方法的示例。

我在这里想念什么?

***** 20 年 5 月 14 日更新 *****

Simple.Odata.Client 不支持深度链接(在单个操作中具有真实数据的模型)。Microsoft 有一个正在积极更新的 OData 客户端,它确实支持相关数据。它更复杂但似乎也更灵活(即 ODataClientFactory 和 DI 支持)。这是文档的链接

Microsoft 客户端让我想起了我们在 WCF 中必须做的事情,因为我们使用 Connected Services 设置代理并链接到 Visual Studio 中的 API 元数据。我确实喜欢它们支持 LINQ 查询,而且我喜欢 IOdataClientFactory 这样我们就可以在没有实际网络调用的情况下进行单元测试。

0 投票
0 回答
132 浏览

.net-core - simple.odata 和 Microsoft.odata 无法将“@OData.Community.Display.V1.FormattedValue”检索到字典和模型

我正在使用 .Net Core 3.1 开发一个系统,以在 odata Web API 端点上与 Microsoft Dynamics 365 集成。

但是,当我想使用 Web API 获取实体时,我无法获取 OptionSet、2 个选项的“FormattedValue”。因为似乎这两个 API 都会尝试解析 $metadata XML 中声明的属性但是,这些 FormattedValue 属性不会出现在 $metadata

如果我尝试使用动态类型:

sapaccount 将只包含字典中的标准属性。

如果我尝试通过以下示例使用实体类:

sapaccount2 在“CreatedBy”上将为空,但“CreatedById”包含 SystemUser 的 Guid。

我还尝试使用 AfterResponse 事件调试原始输出 json,该事件检查是否返回了那些“*@OData.Community.Display.V1.FormattedValue”。

无论如何我可以绕过元数据从 JSON 中获取所有数据吗?或者是否有任何建议的库可以做到这一点,除了 Micrtosoft.crmsdk,因为它使用的是 XRM 服务,将来可能会被弃用?

请帮忙。非常感谢。