CRM 2013插件:在新创建的帐户上建立新的关系

本文关键字:2013 关系 建立 创建 新创建 CRM 插件 | 更新日期: 2023-09-27 18:09:42

我正在为CRM 2013(本地)创建一个插件。我的要求是这样的:

  1. 当一个自定义实体"Contract"创建时,触发插件。
  2. Contract与Quote实体的关系为"1:1"。
  3. Quote与自定义实体"Property"的关系为1:N。
  4. 对于Quote的每个属性,创建新的Account记录
  5. 将新创建的Account记录链接到合同。Contract到Account的关系是1到n

我得到了所有的工作,但一直有问题与#5。由于某些原因,插件抛出一个错误,Account ID不存在。

下面是我的代码:

foreach ("**Property records found in Quote**")
                {
                    var accountEntity = new Entity();
                    accountEntity = new Entity("account");
                    if (record.Attributes.Contains("name"))
                    {
                        accountEntity["name"] = record.Attributes["propertyname"];
                    }
                    else throw new InvalidPluginExecutionException(OperationStatus.Failed, "New Property Name is needed.");
                    service.Create(accountEntity);
                    var referenceCollection = new EntityReferenceCollection();
                    var relatedEntity = new EntityReference
                    {
                        Id = record.Id,
                        LogicalName = record.LogicalName
                    };
                    referenceCollection.Add(relatedEntity);
                    //The relationship schema name in CRM you are using to associate the entities. 
                    var relRelationship = new Relationship
                    {
                        SchemaName = "new_new_contract_account"
                    };
                    service.Associate("account", ContractId, relRelationship, referenceCollection);
                }

CRM 2013插件:在新创建的帐户上建立新的关系

存储新创建帐户的id:

var accountid = service.Create(accountEntity);

relatedEntity object必须设置以下属性:

var relatedEntity = new EntityReference
{
   Id =  accountid, /*the newly created account's id*/
   LogicalName = "account"
};

替换服务。将行与

关联
service.Associate("new_contract", ContractId, relRelationship, referenceCollection);