我创建了一个 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);
}
}
我需要添加什么才能使此代码正常工作?
首先,
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);
}
}
}
}