尝试从 CRM 记录中获取所有实体字段.C#.

本文关键字:实体 字段 获取 CRM 记录 | 更新日期: 2023-09-27 18:30:16

直截了当,我正在尝试制作一个应用程序,以便用户可以在不进入CRM的情况下搜索他们的CRM系统。我已经设法检索了记录,但是当我尝试使用记录属性将记录放入列表中时,我只收到键。

这是代码:

 EntityCollection retrieved = _service.RetrieveMultiple(query);
        foreach (var c in retrieved.Entities)
        {
            foreach (KeyValuePair<String, Object> attribute in c.Attributes)
            {
                lstRecordDetails.Items.Add(string.Format(attribute.Key + ": " + attribute.Value));
            }
        }

这只显示 recordID 和记录名称,我知道它们都是记录的主键,我知道我可以使用 c.Attributes["description"] 进行描述,但是有没有办法我可以从记录中获取所有字段并将它们显示在列表中?

编辑:有关查询的详细信息

        QueryByAttribute query = new QueryByAttribute(entity);
        query.ColumnSet = new ColumnSet(field);
        query.Attributes.AddRange(field);
        query.Values.AddRange(selected);

尝试从 CRM 记录中获取所有实体字段.C#.

检索实体的所有列的方法是

query.ColumnSet = new ColumnSet(true);

但是,请注意这一点,因为查询所有列都会对系统产生影响(应始终显式检索所需的列)。

RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
retrieve.Query = query;
retrieve.ReturnDynamicEntities = true;
retrieved = (RetrieveMultipleResponse)Service.Execute(retrieve);
foreach(var dynEntity in retrieved.BusinessEntityCollection)
{
    foreach (var prop in dynEntity.Properties)
    {
        lstRecordDetails.Items.Add(string.Format("{0}:{1}", prop.Name, prop.Value);
    }
}