问题标签 [simple.odata.client]

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

asp.net-core - 为 Simple.Odata.Client 指定元数据缓存到期?

Simple.Odata.Client 有没有办法指定元数据缓存的到期时间?

在 ConfigureServices 中,我向 GetMetadataDocumentAsync 发出初始请求以预加载元数据文档。我想在 n 小时/天后使缓存过期,以确保对资源的更改反映在我的应用程序中。

我目前的想法是设置一个计时器来运行 ODataClient.ClearMetadataCache(); 但是我只是想检查在实例化 ODataClient 或检索元数据文档时是否应该设置任何内容。

非常感谢

0 投票
2 回答
1064 浏览

c# - 防止 Simple.OData.Client 获取整个结构

我在我的应用程序中使用 simple.odata.client。问题是客户端在第一次调用时检索整个结构太大(超过 30MB),所以我得到了超时?是否有任何参数/设置来阻止客户端检索整个结构。是否有任何其他软件包可以帮助我处理我的应用程序而不是 simple.odata.client

0 投票
0 回答
775 浏览

c# - 简单的 odata 客户端过滤器嵌套集合

我有以下 odata 查询:

Places有一个collection。_ Images此查询返回“DE”的所有位置,并且每个位置仅返回Image具有该属性的位置IsCover true

我怎样才能用流利的 API 写这个?

我试过以下:

但它不断给予和例外。有什么办法可以用流利的 API 写这个吗?

0 投票
0 回答
106 浏览

c# - Simple.OData.Client 不返回结果,没有错误

我正在尝试使用 Simple.OData.Client 库从 OData V2 服务中读取数据,但经过数小时的拉扯后,我的成功率为零。

运行此代码仅This happened在控制台中产生,不会打印任何其他内容,也不会引发异常。出于某种原因,甚至第二个打印语句也不起作用……但是为什么呢?

我完全不知道为什么这不起作用。

这实际上是入门指南中代码的副本:https ://github.com/simple-odata-client/Simple.OData.Client/wiki/Getting-started-with-Simple.OData.Client

谁能帮我解决这个问题?

0 投票
1 回答
635 浏览

c# - Simple.odata.client 停止寻找#metadata

我正在构建一个客户端以从 V4 oData 服务返回数据。以下代码在 LinqPad v5 和 v6 中运行良好。但仅在 Visual Studio 中实现它似乎会为#metadata 创建 GET 请求,然后结束。

我主要在 Windows 10 上创建它,但我也在 VS for Mac 中尝试过。它运行但也只为#metadata 创建 GET。

我创建了新的、干净的项目。我已经回到使用框架 GIT 站点中最简单的请求示例。我尝试过使用 .Net Core(2.2 和 3.0)、.Net Standard 和 .Net Framework 来使用新项目。

代码通常返回以下内容(后跟数据)。

在 Visual Studio 中,我得到的只是......

然后自然退出。没有错误。我觉得我错过了一些非常基本的东西,但我就是找不到。如果有人对此有一些指示,那就太棒了。

0 投票
1 回答
581 浏览

simple.odata.client - Simple.Odata.Client - 批处理

我正在尝试为我们的 CRM 实体之一实施批处理。

我有 2 个场景 1. 添加实体记录,然后更新相同的实体记录(因为我们不能添加非活动记录,所以需要第二次调用使其处于非活动状态)。2.获取实体记录并将其与另一个实体取消链接。

示例代码如下:

另外请让我知道是否有可能使用 Odata Batch 检索记录和更新记录。

我正在使用 simple.Odata.Client 库。

谢谢。帕里托什

0 投票
0 回答
129 浏览

asp.net-core-webapi - 使用 Simple.Odata.Client 查询查询 Dynamics CRM (微服务 - Web Api net core 2.2)

我正在借助基于 asp net core 的微服务中的 Simple.OData.Client 对 Dynamics CRM 进行 CRUD 操作。

问题是当我运行几个批处理或 POST/Patch 操作时,负载测试需要 50 毫秒到 17 秒的时间(50 个用户,5 分钟,大约请求计数为 1000,步进模式,预热持续时间 1 分钟)。

我已经尝试了所有方法,例如将其设为 InsertEntryAsync(false)、UpdateEntryAsync(false)、使用 Key 而不是 Filter(如果适用)、向 ODataBatch 添加几个单独的调用。

谁能建议我还有什么可以尝试将时间从 17 秒缩短到几毫秒?

如果需要更多信息,请告诉我。

提前致谢。

0 投票
1 回答
737 浏览

c# - 使用 Simple.OData.Client 时未找到关联 [值]

我有一个通过IModelConfiguration配置的 OData 服务

这会产生以下(混淆并选择相关部分)元数据:

基本上我有一个实体类型ValuesContainer,它有一个复杂类型ValueItem的集合。

当我尝试通过 http get 查询服务时,以下示例工作正常:

~/odata/valuescontainer?$filter=values/any(v:v/value eq 'example')

这个例子给了我任何ValuesContainer,它有一个包含例子的值。

然而,当我在另一个 C# 应用程序中使用Simple.OData.Client时,我收到错误Simple.OData.Client.UnresolvableObjectException: 'Association [values] not found'

我的 Simple.OData.Client 的代码:

我试图通过 Fiddler 追踪请求是否错误,但它发生在接收 OData 服务的元数据和处理表达式之间的某个地方。

我注意到它在以下位置引发异常

它试图将我的属性Values作为NavigationProperty,但它不是一个。

我的元数据和我的 OData 服务的配置是否错误,为什么它通过 http get 调用工作,或者这是 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 投票
1 回答
382 浏览

asp.net-core - OData:更改 EDM 模型中实体类型的 URL 值

我正在使用一个 ASP.NET Core Web Api 项目,该项目将 OData 用于公开的端点,并与Simple.OData.Client一起使用。

我的一些端点是:

http://{baseUrl}/odata/Vehicle--> 这很完美

但是我对这两个有问题:

http://{baseUrl}/odata/Vehicle/Brand

http://{baseUrl}/odata/Vehicle/Type

基本上,我无法修改我的 EDM 模型来修改 OData 元数据中公开的 URL 属性。我的 EDM 看起来像这样:

当我浏览时获得的元数据http://{baseUrl}/odata/如下:

我找不到保持名称不变的方法,但修改 JSON 上显示的“url”属性以指向我正确的端点。我想要这个结果:

任何公开的EntitySetConfigurationODataConventionModelBuilder似乎有办法为已注册实体类型指定不同 URI 的任何方法。

有人遇到过这个问题吗?我相信这可能是解决这个问题的某种方法。