crm 2011无法将“System.Guid”类型的对象强制转换为“Microsoft.Xrm.Sdk.EntityReference”

时间:2013-07-31 15:37:50

标签: dynamics-crm-2011

下面的代码从我用来保存"模板"的实体创建一组记录。记录。我遍历模板并创建记录,其中包括我使用EntityReferenceentity的查找字段。但是当我使用EntityReference创建一个回到父实体记录的关系时,我得到了这个错误。

  

crm 2011无法投射类型' System.Guid'输入   ' Microsoft.Xrm.Sdk.EntityReference'

            foreach (var template in templateSteps.Entities)
            {
                Entity step = new Entity("img_workflowmanager");
                step["subject"] = template["img_name"];

                if (step.Contains("img_poststepid"))
                {
                    step["img_poststepid"] = (EntityReference)template["img_poststepid"];
                }
                if (step.Contains("img_prestepid"))
                {
                    step["img_prestepid"] = (EntityReference)template["img_prestepid"];
                }

                step["img_workflowstepsid"] = (EntityReference)postMessageImage["img_procurementpackageid"];
                this._orgService.Create(step);
            }

1 个答案:

答案 0 :(得分:6)

消息很明确,postMessageImage["img_procurementpackageid"]包含Guid,而不是EntityReference

假设实体名称为img_workflowsteps,您可以写

Guid packageId = (Guid)postMessageImage["img_procurementpackageid"];
step["img_workflowstepsid"] = new EntityReference("img_workflowsteps", packageId);

顺便说一下,前两个if条件永远不会被执行,因为当你用这个语法创建一个实体时,没有定义任何属性。