Dynamic 365 - 检索 API 元数据属性列表 - DateTimeBehavior

问题描述

我们已经开始使用动态 API 来检索实体的属性列表以进行迁移,如下所示:

GET [Organization URI]/api/data/v9.0/EntityDeFinitions(LogicalName='contact')?$select=LogicalName,AttributeOf,AttributeType HTTP/1.1  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

对于“DateTime”AttributeType 字段,其调用DateTimeBehavior 中有一个属性,它具有“DateOnly”值:

"DateTimeBehavior": {
  "Value": "DateOnly"
}

我们需要知道这一点才能将旧数据转换为 DateTime 或 Date 字段。但是,如果我们在 GET api 调用的 $select 中包含 DateTimeBehavior,我们将得到:

{
  "error": {
    "code": "0x0","message": "Could not find a property named 'DateTime' on type 'Microsoft.Dynamics.CRM.AttributeMetadata'."
  }
}

因此,我们不得不对每个“DateTime属性类型字段进行单独调用,以发现它是否是“DateOnly”。

有没有办法可以 $select 实体中的所有属性并包含这个“DateOnly”字段(如果它存在)?

非常感谢任何帮助。

解决方法

我不这么认为。 In order to retrieve the properties of a specific type of attribute you must cast the Attributes collection-valued navigation property to the type you want.

但是,您可以一次获取实体/表的所有日期时间属性及其相应的 DateTimeBehavior(而不是一次查询一个属性)。

GET /api/data/v9.0/EntityDefinitions(LogicalName='account')/Attributes/Microsoft.Dynamics.CRM.DateTimeAttributeMetadata?$select=LogicalName,DateTimeBehavior

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...