.net 框架 API:创建 API 以在 microsoft Dynamics 365 中创建带有客户类型字段的新事件

问题描述 投票:0回答:1

我创建了一个 API .NET 框架来连接 microsoftdynamics 365,然后我想对包含客户字段(指帐户实体)的事件实体执行 CRUD。

  public void SaveIncident(IncidentEntityModels objIncidentModel)
        {
            using (OrganizationService service = new OrganizationService("MyConnectionString"))
            {
                
                QueryExpression query = new QueryExpression
                {
                    EntityName = "account",
                    ColumnSet = new ColumnSet("accountid", "name")
                };
                List<EntityReference> info = new List<EntityReference>() ;
                EntityCollection Client = service.RetrieveMultiple(query);
                if (Client != null && Client.Entities.Count > 0)
                {
                    EntityReference itm;
                    for (int i = 0; i < Client.Entities.Count; i++)
                    {
                        itm = new EntityReference();
                        if (Client[i].Id != null)
                            itm.Id = Client[i].Id;
                        if (Client[i].Contains("name") && Client[i]["name"] != null)
                            itm.Name = Client[i]["name"].ToString();

                        itm.LogicalName = "account";
                        info.Add(itm);
                    }
                }
             
                Entity IncidentEntity = new Entity("incident");
                if (objIncidentModel.IncidentID != Guid.Empty)
                {
                    IncidentEntity["incidentid"] = objIncidentModel.IncidentID;
                }
                IncidentEntity["title"] = objIncidentModel.TitreIncident;
                IncidentEntity["customerid"] = info;
                IncidentEntity["description"] = objIncidentModel.Description;
         

                    if (objIncidentModel.IncidentID == Guid.Empty)
                    {
                        objIncidentModel.IncidentID = service.Create(IncidentEntity);
                    }
                    else
                    {
                        service.Update(IncidentEntity);
                    }

            }
       

我需要添加什么才能使此代码正常工作?

c# .net dynamics-crm dynamics-365
1个回答
0
投票

首先,

customerid
是一个查找/EntityReference,它不能接受List或Entity集合。此外,您的代码正在使用
RetrieveMultiple
查询所有帐户,如果需要,您必须应用
filter
才能仅获取特定帐户。

public void SaveIncident(IncidentEntityModels objIncidentModel)
    {
        using (OrganizationService service = new OrganizationService("MyConnectionString"))
        {
            
            QueryExpression query = new QueryExpression
            {
                EntityName = "account",
                ColumnSet = new ColumnSet("accountid", "name")
            };
           
            EntityCollection Client = service.RetrieveMultiple(query);
            if (Client != null && Client.Entities.Count > 0)
            {
                EntityReference itm;
                for (int i = 0; i < Client.Entities.Count; i++)
                {
                    itm = new EntityReference();
                    if (Client[i].Id != null)
                        itm.Id = Client[i].Id;
                    if (Client[i].Contains("name") && Client[i]["name"] != null)
                        itm.Name = Client[i]["name"].ToString();

                    itm.LogicalName = "account";

            Entity IncidentEntity = new Entity("incident");
            if (objIncidentModel.IncidentID != Guid.Empty)
            {
                IncidentEntity["incidentid"] = objIncidentModel.IncidentID;
            }
            IncidentEntity["title"] = objIncidentModel.TitreIncident;
            IncidentEntity["customerid"] = itm;
            IncidentEntity["description"] = objIncidentModel.Description;
     

                if (objIncidentModel.IncidentID == Guid.Empty)
                {
                    objIncidentModel.IncidentID = service.Create(IncidentEntity);
                }
                else
                {
                    service.Update(IncidentEntity);

                }
            }
         

        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.