【问题标题】:Why does the fetchXML Web API url require an entity name?为什么 fetchXML Web API url 需要实体名称?
【发布时间】:2021-05-19 07:17:09
【问题描述】:

为了制定 FetchXML Web 请求,我必须使用实体名称两次,一次(复数形式)在 URL 中,一次(单数形式)在 fetchXML 查询文档中:

https://abcdef.ghi/fghjkl/api/data/v8.0/transactioncurrencies=<fetch ... <entity name='transactioncurrency'>... >
                                        ^^^^^^^^^^^^^^^^^^^^^                          ^^^^^^^^^^^^^^^^^^^

我想知道为什么我觉得这是多余的。

问题的背景是我想提交任何 fetch-XML 文档,而无需先将其解析为entity name='....',然后使用在 URL 中找到的实体名称来提交文档。

【问题讨论】:

    标签: dynamics-crm fetchxml


    【解决方案1】:

    我没有明确的答案,但它可能是 OData 规范所要求的,请记住,在此特定查询中,fetchxml 是一个参数,它没有(明确地)定义您正在操作的实体。

    只是关于复数/单数形式的注释,大多数时候你有复数,在某些情况下(自定义实体)你会得到混合的结果,在某些情况下(标准实体)你会得到一个完全不同的结果,比如“ webresourceset”,即“webresource”实体的集合。

    我的意见?他们应该在 OData 中使用单数形式

    【讨论】:

      【解决方案2】:

      也许这会有所帮助,根据 CRM 的文档,在 web api 中,他们使用实体集的名称来制作 url。该实体集对应于实体元数据的“LogicalCollectionName”属性值。

      你可以像这样检索这个属性值:

        .../api/data/v9.0/EntityDefinitions?$filter=LogicalName eq 'xxxx'&$select=LogicalCollectionName
      

      这将给出如下结果:

      {"@odata.context":".../api/data/v9.0/$metadata#EntityDefinitions(LogicalCollectionName)","value":[{"LogicalCollectionName":"yyyyy","MetadataId":"guidnumberofthemetada"}]}
      

      正如他们所指出的,甚至可以更改此名称以更改调用 url 的方式:

      https://docs.microsoft.com/en-us/powerapps/developer/data-platform/webapi/web-api-types-operations#change-the-name-of-an-entity-set

      问候

      【讨论】:

      • 感谢您的回答。我将在星期二再次从事该项目,所以我希望我能看一下它并就我的发现向您提供反馈。
      • 正如文档中所指出的,您应该始终使用 EntitySetName,大多数情况下,LogicalCollectionName 和 EntitySetName 返回相同的值(例如帐户),但并非总是如此(如我在回答中使用 webresource 的示例, LogicalCollectionName 返回 webresources 和 EntitySetName 返回 webresourceset),用于查询 OData EntitySetName 应该使用
      猜你喜欢
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 2011-12-26
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      相关资源
      最近更新 更多