C# 获取CRM实体名称的简便快捷方法

C# 获取CRM实体名称的简便快捷方法,c#,sdk,dynamics-crm-2011,C#,Sdk,Dynamics Crm 2011,检索包含所有属性的CRM实体时,在某些情况下,类型为EntityReference的某些属性没有名称。在这种情况下,设置了引用的ID,但其Name属性为null 我必须用这个名字来做一些评估。因此,我试图查询引用的实体以获取其名称。问题是,包含实体名称的属性因实体类型不同而不同 (例如,对于Account,它是“name”,对于Incident,它是“title”,对于其他类型,它是“somePrefix\u name\u或\u so”) 是否有一种使用CRM-SDK和查询获取实体名称(实体引用

检索包含所有属性的CRM实体时,在某些情况下,类型为
EntityReference
的某些属性没有名称。在这种情况下,设置了引用的
ID
,但其
Name
属性为
null

我必须用这个名字来做一些评估。因此,我试图查询引用的实体以获取其名称。问题是,包含实体名称的属性因实体类型不同而不同

(例如,对于Account,它是“name”,对于Incident,它是“title”,对于其他类型,它是“somePrefix\u name\u或\u so”)

是否有一种使用CRM-SDK和查询获取实体名称(实体引用的name属性)的简单方法

其他详情: 代码位于CRM插件中。在那里,pre/post映像通常包含所有属性,但在某些情况下,在更新期间,(几乎)所有实体引用都会丢失其名称。字典中的属性仍然存在,包括EntityReference对象。只有EntityReference实例的Name属性为null

我目前的做法是:

  • 在插件中检索实体
  • 获取特定属性(类型:EntityReference)
  • 获取该EntityReference的名称
    • 如果该名称为
      null
      ,请执行查询以获取该名称(帮助!如何?)
  • 在某些逻辑中使用该名称

为此,您需要具有EntityReference的实体的EntityMetadata。然后可以获取EntityMetadata.PrimaryNameAttribute属性,它包含PrimaryName属性的名称。给定该属性名称,您可以获得所需的内容。
请在此处查看有关此属性的更多信息:

在许多情况下,我必须计算不同的属性,从而计算不同的实体类型。这是否意味着我必须首先查询元数据,然后根据元数据查询相应的名称属性?是的,您需要实体的元数据才能找到其主属性名称。