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

c# - “类型 {type} 上不存在属性 {property}” - 但它确实存在。OData 配置问题?

我有一个具有 OData 后端的 Blazor WASM 应用程序。我正在尝试配置我的一个模型的 NavigationProperty,以便我可以使用$expand=查询参数返回更多数据,但是在尝试发出PATCH请求时我不断收到以下错误(GET工作得很好):

Microsoft.OData.ODataException: The property 'JobId' does not exist on type 'Coin.ODataOrderHeader'. Make sure to only use property names that are defined by the type or mark the type as open type.

但它确实存在!不只是在模型中:

但在$metadata文档中也是如此:

下面是创建模型的代码:

我可能应该指出,ODataOrderHeader更多的是 DTO 类型,而JobsEF 脚手架类型。

下面是Simple.OData.Client调用 API 的代码:

这是上面代码调用的控制器操作:

最后,完整的错误消息:

是否有我遗漏的配置错误或控制器操作有问题?

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 服务,将来可能会被弃用?

请帮忙。非常感谢。

0 投票
0 回答
157 浏览

c# - 使用 Microsoft.OData.Client 为导航属性和子类创建 OData 查询 URL

我正在使用 Microsoft OData 客户端(不生成代码)来访问 Dynamics CRM API,并且我试图弄清楚如何让它生成像这样的简单 URL...

https://<base URL>/EntityDefinitions(<ObjId>)/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$expand=GlobalOptionSet

这是一个简单的查询,用于从单个实体获取导航属性,向下转换AttributeMetadatafromAttributesPicklistAttributeMetadata,然后在其中展开属性。

使用Simple.OData.Client,我可以使用以下代码执行此操作:

Microsoft.OData.Client,我有一点战斗。到目前为止,我能想到的最好的是:

但是,上面的代码给了我这个 URL: https://<base URL>/EntityDefinitions(<ObjId>)/Attributes?$expand=OptionSet

也就是说,我已经设法让导航工作(尽管通过讨厌的、非类型安全的代码),但向下转换根本没有任何效果。我也试过IQueryable.OfType<>,但没有任何区别。

与 Microsoft OData 库中的 Simple.OData.Client 库.As<>等效的正确方法是什么?.Navigate()我现在真的更喜欢 Simple.OData.Client,但我想给 MS OData 一个公平的机会,因为它有更多的下载量,而且它是一个 MS 包,所以可能有更长的使用寿命。

谢谢!

0 投票
0 回答
91 浏览

dynamics-crm - 如何使用 Simple.OData.Client 在 Microsoft Dynamics 365 中获取选项列表/选项集值

我目前正在使用 Simple.OData.Client 通过 OData API 从 Microsoft Dynamics 365 检索某些实体的值。这是我的查询如何看起来的通用示例:

像这样检索实体数据的问题是我无法获取选项列表值的文本。相反,我得到一个像“500350000”这样的整数,这对我来说没用,因为我需要这个值的实际文本。

我已经做了一些研究,似乎我对获取某个属性的选项列表值的请求必须如下所示:

如何使用 Simple.OData.Client 创建这样的查询,或者是否有另一种方法来获取实际值而不是整数?