2016-09-12 53 views
0

我是Dynamics CRM中的新成员,我想创建一个控制台应用程序,可以为帐户实体创建新记录,并可以显示来自Dynamics CRM在线帐户实体的所有帐户名称的列表。如何使用控制台应用程序从Dynamics CRM Online中检索数据?

这是我的代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Configuration; 
using Microsoft.Xrm.Sdk; 
using Microsoft.Xrm.Tooling.Connector; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int choice; 
      CrmServiceClient crmConn = new CrmServiceClient(ConfigurationManager.ConnectionStrings["CRM"].ConnectionString); 
      IOrganizationService crmService = crmConn.OrganizationServiceProxy; 

      Entity acc = new Entity("account"); 
      String account_name; 
      Console.WriteLine("Press 1 to Create a new account or Press 2 to view list of available accounts."); 
      choice = Convert.ToInt32(Console.ReadLine()); 
      switch (choice) 
      { 
       case 1: 
        Console.WriteLine("Enter Name of Account to Create ?"); 
        account_name = Console.ReadLine(); 
        acc["name"] = account_name; 
        crmService.Create(acc); 
        Console.WriteLine("*****An account with name {0} is created successfully*****", account_name); 
        Console.WriteLine(); 
        Console.WriteLine("Press any key to exit.."); 
        Console.ReadKey(); 
        break; 
       case 2: 
        //code to display list of all account names in CRM. 
        Console.ReadKey(); 
        break; 
       default: 
        Console.WriteLine("Wrong input..."); 
        Console.ReadKey(); 
        break; 

      } 
     } 

    } 
} 
+0

如果你想检索数据,你需要做一个QueryExpression –

+0

QueryExpression查询=新QueryExpression {实体名称= “帐户”,ColumnSet =新ColumnSet(新的String [] { “名”}) }; EntityCollection account = service.RetrieveMultiple(query); 是否这样? – Dev

+1

是的,就像那样。 –

回答

1

这里是我的回答

内部案例2:我用下面的代码:

QueryExpression query = new QueryExpression { EntityName = "account", ColumnSet = new ColumnSet(new string[] { "name" }) }; 
EntityCollection account = crmService.RetrieveMultiple(query); 
string name = ""; 
foreach (var count in account.Entities) 
{ 
    name = count.GetAttributeValue<string>("name"); 
    Console.WriteLine(name); 
} 
Console.ReadKey(); 
0

对于案例2我会更好地去使用FetchXML的方法。转到高级查找并获取过滤条件,然后下载xml文件。

然后纳入fetchxml在你的代码和检索这样

VAR objCollection数据= crmService.RetrieveMultiple(新FetchExpression(fetchXMLString));

希望它可以帮助

+0

FetchXML限制5000条记录,但我的客户端有5000条以上的记录。无论如何工作现在完成。谢谢你的回答@Manish – Dev

相关问题