2016-07-26 121 views
0

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

 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(); 

它返回任何错误,并显示出真正的连接,我似乎无法找到从哪里开始从这里解决。

回答

1

您的代码适合我,所以您可能因为连接的用户没有权限读取您的CRM组织中的contact记录或没有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")); 
    } 
+0

感谢您改进的代码,这有点拼凑在一起的代码后,我得到了很多不同的方式来试图让它工作。我必须和我的CRM部门进行沟通,因为我过去曾经有权限问题。谢谢。 – Greg2518