Dynamics crm 2011 Microsoft CRM Web服务-查找属性元数据(一对多或一对一)
我需要从Microsoft CRM 2011系统创建一个通用的导出器/导入器,但我无法确定LookupAttribute是一对一关系还是一对多关系 E.x。 我有一个叫做“电子邮件”的实体 电子邮件可以有一个“From”(这是一个查找属性,可在多个其他实体列表中查找) 然后它可以有多个“To”(也可以作为查找属性引用到多个实体列表中) 我刚刚得出的结论是我通过使用MS CRM门户网站得出的。我只是找不到任何方法来查看这些实体或属性的元数据中是否存在一对一或一对多的关系 我已经看了这个关于如何建立这种关系的例子,但它并没有让我更进一步Dynamics crm 2011 Microsoft CRM Web服务-查找属性元数据(一对多或一对一),dynamics-crm-2011,crm,generic-programming,Dynamics Crm 2011,Crm,Generic Programming,我需要从Microsoft CRM 2011系统创建一个通用的导出器/导入器,但我无法确定LookupAttribute是一对一关系还是一对多关系 E.x。 我有一个叫做“电子邮件”的实体 电子邮件可以有一个“From”(这是一个查找属性,可在多个其他实体列表中查找) 然后它可以有多个“To”(也可以作为查找属性引用到多个实体列表中) 我刚刚得出的结论是我通过使用MS CRM门户网站得出的。我只是找不到任何方法来查看这些实体或属性的元数据中是否存在一对一或一对多的关系 我已经看了这个关于如何建
是否有人有使用MS CRM 2011进行通用导出/导入的经验可以帮助我?CRM有两种关系:
- 一对多:一个实体上的查找,另一个实体上的网格
- 多对多:两个实体上的网格
To
字段可以填充多个帐户和联系人记录。而From
字段只能有一条记录,但可以是系统用户或队列。至
和自
都是活动方查找的示例
因此,就您试图做的事情而言,您需要检查:
AttributeMetadata.AttributeType
查看它是否是一个参与方列表。
LookupAttributeMetadata.Targets
查看在查找中允许哪些记录类型
下面的代码显示了如何对几个不同的字段执行此操作
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = "email",
LogicalName = "to",
RetrieveAsIfPublished = true
};
RetrieveAttributeResponse result = Service.Execute(attributeRequest) as RetrieveAttributeResponse;
Trace.WriteLine("Email - To");
Trace.WriteLine("AttributeMetadata.AttributeType: " + result.AttributeMetadata.AttributeType);
Trace.WriteLine("LookupAttributeMetadata.Targets: " + ((LookupAttributeMetadata)result.AttributeMetadata).Targets.CollectionToString(", "));
attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = "email",
LogicalName = "from",
RetrieveAsIfPublished = true
};
result = Service.Execute(attributeRequest) as RetrieveAttributeResponse;
Trace.WriteLine("Email - From");
Trace.WriteLine("AttributeMetadata.AttributeType: " + result.AttributeMetadata.AttributeType);
Trace.WriteLine("LookupAttributeMetadata.Targets: " + ((LookupAttributeMetadata)result.AttributeMetadata).Targets.CollectionToString(", "));
attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = "account",
LogicalName = "parentaccountid",
RetrieveAsIfPublished = true
};
result = Service.Execute(attributeRequest) as RetrieveAttributeResponse;
Trace.WriteLine("Account - Parent Account Id");
Trace.WriteLine("AttributeMetadata.AttributeType: " + result.AttributeMetadata.AttributeType);
Trace.WriteLine("LookupAttributeMetadata.Targets: " + ((LookupAttributeMetadata)result.AttributeMetadata).Targets.CollectionToString(", "));
以及输出:
Email - To
AttributeMetadata.AttributeType: PartyList
LookupAttributeMetadata.Targets: account, contact, lead, queue, systemuser
Email - From
AttributeMetadata.AttributeType: PartyList
LookupAttributeMetadata.Targets: queue, systemuser
Account - Parent Account Id
AttributeMetadata.AttributeType: Lookup
LookupAttributeMetadata.Targets: account
您正在尝试导出/导入什么?您是在尝试转移解决方案还是只是一些定制?“发件人”和“收件人”不是查找字段,它们是称为“参与方列表”的特殊CRM字段,不能手动创建。基本上,它们是活动方的1:N,其中活动方可以是对该方列表字段的任何已定义系统实体的引用,也可以是带有电子邮件的简单字符串。CRM不支持一对一关系。你的问题太笼统了。很好的回答詹姆斯,昨天我检查了
AttributeType
属性,但没有找到目标
如果你看你的输出(和我得到的一样)-你如何从输出中判断“To”是“一对多”而“from”是“一对多”呢?@CoBolt我确实研究过,但目前我不确定如何在上面的代码中确定它。您可能可以在RetrieverRelationshipRequest
中找到答案(或者询问关系)。作为一个后备位置;由于我们这些凡人(例如,不是微软)无法自定义系统以添加PartyList
,因此在CRM的主要版本中,PartyList
字段的数量几乎是静态的。因此,您可以手动映射这些详细信息—虽然不是很好,但可能是实现目标的最快方法。我已经研究了电子邮件实体之间的关系。但我还没有找到任何与“from”或“to”属性相关的属性。就像你说的那样,我们可以用活动做一个特例,但我真的想避免这种情况