CRM RetrieveMultipleResponse 不返回任何结果

CRM RetrieveMultipleResponse not returning any results

我正在尝试制作一个控制台应用程序以使用 Dynamics CRM SDK 和 C# 检索结果,但我似乎无法从我的查询中获得任何结果。我能够看到我已连接到服务器,但我尝试制作的任何 QueryExpression 似乎都没有返回,即使我没有设置过滤器也是如此。即使使用我们有相应值的文档中的示例,我最终还是空手而归。我的代码是:

        CrmServiceClient crmSvc = new CrmServiceClient(ConfigurationManager.ConnectionStrings["MyCRMServer"].ConnectionString);
        Console.WriteLine(crmSvc.IsReady);
        //Display the CRM version number and org name that you are connected to.
        Console.WriteLine("Connected to CRM! (Version: {0}; Org: {1}",
        crmSvc.ConnectedOrgVersion, crmSvc.ConnectedOrgUniqueName);

        QueryExpression userSettingsQuery = new QueryExpression("contact");
        userSettingsQuery.ColumnSet.AllColumns = true;
        var retrieveRequest = new RetrieveMultipleRequest()
        {
            Query = userSettingsQuery
        };
        EntityCollection EntCol = (crmSvc.ExecuteCrmOrganizationRequest(retrieveRequest) as RetrieveMultipleResponse).EntityCollection;
        foreach (var a in EntCol.Entities)
        {
            Console.WriteLine("Account name: {0} {1}", a.Attributes["firstname"], a.Attributes["lastname"]);
        }
        Console.Write(crmSvc.LastCrmError);
        Console.Write(crmSvc.LastCrmException);
        Console.ReadLine();

它returns没有错误,连接显示为 True,我似乎无法从这里找到从哪里开始进行故障排除。

你的代码对我来说工作正常,所以可能是你所连接的用户没有读取 contact 记录的权限,或者你的 CRM 组织中没有 contact 记录。

此外,我知道您正在尝试拼凑一个样本,但我在下面拼凑了一个更直接的代码版本。

    var crmSvc = new CrmServiceClient(<CONNECTION STRING>);

    var contactQuery = new QueryExpression("contact")
    {
        ColumnSet = new ColumnSet("firstname", "lastname")
    };
    var contacts = crmSvc.RetrieveMultiple(contactQuery).Entities;
    foreach(var contact in contacts)
    {
        Console.WriteLine("Contact name: {0} {1}", contact.GetAttributeValue<String>("firstname"), contact.GetAttributeValue<String>("lastname"));
    }