【问题标题】:Dynamics 365 default value in FetchXMLFetchXML 中的 Dynamics 365 默认值
【发布时间】:2021-01-06 03:15:27
【问题描述】:

无论如何我可以在 Fetch XML 查询中接收默认值

例如 <attribute name="fullname" />

如果实体中的“全名”当前未在动态中设置,则它不会返回属性。有什么办法可以让我在结果集中收到空白?

我正在使用 EntityCollection collection = svc.RetrieveMultiple(new FetchExpression(body.ToString()));

我不想在代码中检查属性,不想硬编码,因为它可以是任何属性。

【问题讨论】:

  • 这是特定于全名的,还是其他属性也会发生?我记得在某些情况下全名的行为与其他属性不同。
  • fullname 只是一个例子,它可以是任何属性。
  • 但是其他属性的行为是否也一样?另外,只是为了确保:当你说它没有返回时,你的意思是如果你要求 contact["fullname"] 你得到一个错误?
  • 是的,在 fetch xml 中,这是我所知道的默认行为。如果任何属性为 null 或 lank Fetch XML 结果不返回该属性。因此根据您的查询,contact["fullname"] 将为空。
  • 为空不等于没有被获取。如果 CRM 中的值为 null,那么您还期望它获取什么?

标签: c# .net dynamics-crm dynamics-365 fetchxml


【解决方案1】:

这是通常的预期行为。只是我们必须检查存在性和可用性,如下所示:

if (entity.Contains("fullname") && entity.GetAttributeValue<String>("fullname") != null)
{

//your logic here

}

在使用foreachEntityCollection 迭代中,对其数据类型的每个属性使用上述检查。

【讨论】:

  • 谢谢阿伦。但正如我在问题中所说,我不想对属性进行硬编码。
  • @DaemonBee 好的,然后不知道会发生什么,它的数据类型是你想要实现的目标?
  • 我想接收带有空白字段的属性。
  • @DaemonBee 这是设计使然,因此我们无法自行更改。得到那个之后?
【解决方案2】:

假设您将 ColumnSet 设置为 All/true。

您可以使用RetrieveEntityRequest 将所有实体属性与元数据分开查询 确保将 EntityFilter 设置为 Attributes 这将从元数据中检索所述实体类型的所有属性。

获得所有现有属性的列表后,您可以循环检查它们是否存在于集合中返回的实体中 if(!entity.contains(att)) => 这意味着该值为空。

Dynamics 默认情况下不会返回集合中的属性,如果其值为 null。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多