我在两个实体之间有多对多的关系。我知道Dynamics CRM在数据库中为它创建了一个交叉表。我知道如何使用来自该自动创建实体的fetch命令检索记录。
但现在我想使用JavaScript动态地向该表添加新记录。这可能吗?
我尝试为此类型创建新记录,但后来出现以下错误。
create方法不支持[“relationship_entity_name”]类型的实体。
答案 0 :(得分:9)
JavaScript SDK在这一点上并不是最清晰的,但它的基础是SDK不允许直接插入到交叉表中。它只允许调用Associate
方法。以下是两个TechNet链接,可能会引导您朝着正确的方向前进。
此外,Avanade在公开提供CRM JavaScript library (updated to reference archive.org)方面做得非常出色,其中包括Associate
辅助方法。
最后,一些示例代码:
function AssociateEntities(moniker1, moniker2, relationshipName) {
var xml;
var resultXml;
xml = "<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
xml += "<Request xsi:type='AssociateEntitiesRequest'>";
xml += "<Moniker1><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker1[0].id + "</Id>";
xml += "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker1[0].entityType + "</Name></Moniker1>";
xml += "<Moniker2><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker2[0].id + "</Id>";
xml += "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker2[0].entityType + "</Name></Moniker2>";
xml += "<RelationshipName>" + relationshipName + "</RelationshipName>";
xml += "</Request></Execute>";
resultXml = CallCrmService(xml, "Execute");
if (resultXml) {
return "success";
}
else {
return null;
}
}