将帐户链接到活动CRM

本文关键字:活动 CRM 链接 | 更新日期: 2023-09-27 18:13:38

我正在编写从数据库中提取并将信息填充为活动的代码,我成功地将字段从数据库添加到描述和主题字段,但我似乎无法将其链接到帐户?这是我尝试过的;

foreach (var phoneNumber in phoneNumbers)
{
    var potentialMatches = _xrm.AccountSet.Where(account => account.Address1_Telephone2.Equals(phoneNumbers)).ToList();
    if (potentialMatches.Count > 0)
    {
        var accountMatch = potentialMatches.First();
        var actualCRMAccount = (Account) _xrm.Retrieve("Account", accountMatch.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));
        if (actualCRMAccount != null)
        {
            //Is this correct way?
            new ActivityParty()
            {
                PartyId = new EntityReference(Account.EntityLogicalName, actualCRMAccount.Id)
            };
            activityParties.Add(new ActivityParty() {Id = actualCRMAccount.Id});
        }
    }
}
//RegardingObjectId not working
//RegardingObjectId = new EntityReference(Account.EntityLogicalName, recordRow.Cells[0].Value.ToString);
newMsg.To = activityParties;
newMsg.Description = recordRow.Cells[0].Value.ToString();
newMsg.Subject = recordRow.Cells[2].Value.ToString();
_xrm.Create(newMsg);

编辑1:当我现在运行它时,我得到这个警告

未处理的System.ServiceModel类型异常。Microsoft.Xrm.Sdk.dll中出现FaultException ' 1' .
附加信息:在元数据缓存中找不到名称= 'Account'的实体。

这段代码抛出了警告

var actualCRMAccount = (Account)_xrm.Retrieve("Account", accountMatch.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));

为什么会这样?

编辑2:我将Account替换为Account,见下文。

  var actualCRMAccount = (Account)_xrm.Retrieve("account", accountMatch.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));

编辑3:我现在试着找线索。但是当我添加这段代码时

newMsg.RegardingObjectId = activityParties;

我得到这个错误。

不能隐式转换类型"System.Collections.Generic"。列出"to"Microsoft.Xrm.Client。CrmEntityReference '

如何给RegardingObjectId赋值

感谢大家的帮助。

将帐户链接到活动CRM

问题是您通过以下方式添加帐户:new ActivityParty() {Id = actualCRMAccount。Id}

要定义一个新的ActivityParty,您必须设置PartyId属性,它是所选类型的实体引用。

new ActivityParty() { PartyId = new EntityReference(Account.EntityLogicalName,actualCRMAccount.Id)    }

下面一行有一个错别字:

var potentialMatches = _xrm.AccountSet.Where(account => account.Address1_Telephone2.Equals(phoneNumbers)).ToList();

.Equals(phoneNumbers)应为:.Equals(phoneNumber)

然后在检索帐户记录后将代码替换为:

var actualCRMAccount = (Account)_xrm.Retrieve("Account", accountMatch.Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));
if (actualCRMAccount != null)
{
    activityParties.Add(new ActivityParty { PartyId = actualCRMAccount.ToEntityReference() });
}