System.InvalidCastException Dynamics CRM

时间:2018-02-07 01:22:23

标签: c# dynamics-crm dynamics-365 dynamics-crm-365

我有一个创建或更新帐户的代码。此代码块调用另一种方法,该方法一旦被选为帐户的主要联系人,就会将联系人记录保存在联系人记录中。

但是,当我尝试运行此命令时,我收到此错误:

  

Microsoft.Xrm.Sdk.dll中出现'System.ServiceModel.FaultException`1'类型的异常,但未在用户代码中处理   其他信息:System.InvalidCastException:Microsoft Dynamics CRM遇到错误。管理员或支持的参考编号:#06B9DDED

它发生在UpdateAccountNameContactEntity方法的Update上。我已经阅读了几个网站,说它可能是我正在使用的Guid,但我对此很新,我不知道该如何修复它。

我现在正在使用ASP.NET MVC和Dynamics 365。我使用this作为我的指南来创建它。

这是代码。

public void SaveAccount(AccountEntityModels objAccountModel)
    {
        using (OrganizationService service = new OrganizationService("CRM"))
        {
            Entity AccountEntity = new Entity("account");

            if (objAccountModel.AccountID != Guid.Empty)
            {
                AccountEntity["accountid"] = objAccountModel.AccountID;
            }

            AccountEntity["name"] = objAccountModel.AccountName;
            AccountEntity["telephone1"] = objAccountModel.Phone;
            AccountEntity["fax"] = objAccountModel.Fax;
            AccountEntity["websiteurl"] = objAccountModel.Website;
            AccountEntity["primarycontactid"] = new Microsoft.Xrm.Sdk.EntityReference { Id = objAccountModel.PrimaryContact.Id, LogicalName = "account" };

            if (objAccountModel.AccountID == Guid.Empty)
            {
                objAccountModel.AccountID = service.Create(AccountEntity);
                UpdateAccountNameContactEntity(objAccountModel.AccountID, objAccountModel.PrimaryContact.Id);
            }
            else
            {
                service.Update(AccountEntity);
                UpdateAccountNameContactEntity(objAccountModel.AccountID, objAccountModel.PrimaryContact.Id);
            }
        }
    }

    public void UpdateAccountNameContactEntity(Guid accountId, Guid contactId)
    {
        using (OrganizationService service = new OrganizationService("CRM"))
        {
            try
            {
                Entity contactEntity = new Entity("contact");
                contactEntity["contactid"] = contactId;
                contactEntity["parentcustomerid"] = accountId;
                service.Update(contactEntity); //THIS IS WHERE I GET THE ERROR
            }
            catch (Exception ex)
            {
            }
        }
    }

1 个答案:

答案 0 :(得分:3)

您正尝试在EntityReference中分配GUID。

更改此行

contactEntity["parentcustomerid"] = accountId;

如下所示:

contactEntity["parentcustomerid"] = new Microsoft.Xrm.Sdk.EntityReference { Id = accountId, LogicalName = "account" };