如何在Dynamics CRM 2016中使用DiscoveryService获取实体中的项目列表?

时间:2018-09-18 13:49:59

标签: c# dynamics-crm crm

我正在尝试使用CRM 2016内部部署中的DiscoveryServiceClient获取联系人列表

我添加了服务引用并创建了一个对象,但是我不确定应该使用哪种方法来获取实体项列表

                    CRMService.DiscoveryServiceClient client = new CRMService.DiscoveryServiceClient();
                    client.Open();
                    var query = new QueryExpression();
                    query.EntityName = "Contact";

                    query.ColumnSet = new ColumnSet { AllColumns = true };
                    var coll = client.RetrieveMultiple(query);

                    Console.WriteLine("Retrieved {0} entities", coll.Entities.Count());
                    foreach (var item in coll.Entities)
                    {
                        Console.WriteLine("Contact: " + item);
                    }
                    client.Close();

当我使用上面的代码时,它说

  

DiscoveryServiceClient不包含以下定义:   RetrieveMultiple

我也尝试使用下面的代码

QueryExpression qe = new QueryExpression();
                    qe.EntityName = "contact";
                    qe.ColumnSet = new ColumnSet();
                    qe.ColumnSet.Columns.Add("emailaddress1");
                    EntityCollection ec = organizationProxy.RetrieveMultiple(qe);
 foreach (Entity act in ec.Entities)
                    {
                        Console.WriteLine("account email:" + act["emailaddress1"]);
                    }

这可以很好地加载,但项目中的所有值均为空

1 个答案:

答案 0 :(得分:1)

您是否特别需要使用DiscoveryServiceClient? 如果这是一项工作,那么您应该/可以使用IOrganizationService检索您的EntityCollection。

这里有一个小链接,可能会帮助您:https://docs.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/gg328029(v=crm.8)