FetchXML属性缺失

时间:2018-11-27 10:23:42

标签: dynamics-crm fetchxml

当尝试使用Dynamics CRMFetchXML检索实体时,似乎缺少其中一个属性。

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="sb_eventbooking">
    <attribute name="sb_name" />
    <attribute name="sb_bookeridname" />    < problem here
    <attribute name="createdon" />
    <atrribute ........

FetchXML文件中有18个属性,但是在运行应用程序时只有17个可用:

enter image description here

缺少sb_bookeridname。如果我进入FetchXML文件并输入一个我不知道的属性,则会收到错误消息:

'sb_eventbooking' entity doesn't contain attribute with Name = 'fakeattribute'.

因此,应用程序在那里接受 属性,称为“ sb_bookeridname”,但我无法从中获取值。我知道带有null值的列可能存在问题,但其他属性似乎没有此问题。我对所有属性都使用了此检查,并为所有其他属性获取值:

if (entity.Attributes.Contains("sb_bookeridname") && entity.GetAttributeValue<String>("sb_bookeridname") != null)
{
     booking.bookeridname = entity.GetAttributeValue<String>("sb_bookeridname");
}

编辑1:

enter image description here

2 个答案:

答案 0 :(得分:1)

我相信您有一个架构名称为 sb_bookerid 的查找字段。创建查找字段时,CRM会在表中自动创建一列以存储与查找相对应的文本值。因此,当我们创建查找字段 sb_bookerid 时,CRM将自动在 sb_eventbooking 实体中创建名称为 sb_bookeridname 的列。

这是您执行FetchXML查询时不会收到错误的原因,因为存在具有名称的列,但CRM限制了其显示其值。因此,如果要检索 sb_bookerid 字段中的值,请使用以下代码-

if(entity.Contains("sb_bookerid"))
{
bookeridname=((EntityReference)entity.Attributes["sb_bookerid"]).Name
}

希望有帮助。

答案 1 :(得分:0)

这是更干净的方法:

bookeridname = entity.GetAttributeValue<EntityReference>("sb_bookerid")?.Name;