none
CRM2011 Linq查询 RRS feed

  • 问题

  • OrganizationServiceContext orgContext = new OrganizationServiceContext(orgService);
                var accounts = from a in orgContext.CreateQuery<Account>()
                               select new Account
                               {
                                   Name = a.Name,
                                   Address1_County = a.Address1_County
                               };
                foreach (var c in accounts)
                {
                    result = c.Name;
                }

    为什么运行到 foreach (var c in accounts)时就会报错呢。(我连接的是远程服务器在服务器上运行也是同样的错误)

    orgService是用IOrganizationServiceFactory创建的。而不是像SDK例子中是用OrganizationServiceProxy转换来的。和这个有关系么?

    错误:

    类型“Microsoft.Xrm.Sdk.Entity”的对象无法转换为类型“OutPlugIn.Account”。

    谢谢。

    2011年8月12日 9:44

答案

  • 你需要使用如下代码

                        var accounts = from a in context.CreateQuery("account")
                                       select new Account
                                       {
                                           Name = a["name"].ToString()
                                       };

    daemon lin
    • 已标记为答案 Dirk2011 2011年8月15日 7:58
    2011年8月15日 3:36

全部回复

  • 你需要使用如下代码

                        var accounts = from a in context.CreateQuery("account")
                                       select new Account
                                       {
                                           Name = a["name"].ToString()
                                       };

    daemon lin
    • 已标记为答案 Dirk2011 2011年8月15日 7:58
    2011年8月15日 3:36
  •    Uri uri = new Uri("xxxx");
    
    
    
      ClientCredentials credentials = new ClientCredentials();
    
    
    
      credentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "pwd", "domain");
    
    
    
      OrganizationServiceProxy _proxy = new OrganizationServiceProxy(uri, null, credentials, null);
    
    
    
      _proxy.EnableProxyTypes();
    
    
    
      IOrganizationService _serviceNew = (IOrganizationService)_proxy;
    
    
    
    
    
      result = "";
    
    
    
      OrganizationServiceContext orgContext = new OrganizationServiceContext(_serviceNew);
    
    
    
       var accounts = from a in orgContext.CreateQuery<Account>()
    
    
    
        select new Account
    
    
    
        {
    
    
    
        Name = a.Name,
    
    
    
        Address1_County = a.Address1_County
    
    
    
        };
    
    
    
      // int i =accounts.Count();
    
    
    
      foreach (var c in accounts)
    
    
    
      {
    
    
    
      result = c.Name;
    
    
    
      }
    
    
    
    
    
    
    
    

    试了一下,这样写就可以查询成功了。但是没太弄明白。黑体部分和直接用IOrganizationServiceFactory  创建的IOrganizationService有什么区别。难道要使用早期绑定方式就要用这种写法么?谢谢。知道的请告诉下。


    • 已编辑 Dirk2011 2011年8月15日 8:56 格式
    2011年8月15日 8:53
  • _proxy.EnableProxyTypes();

    我看SKD文档好像是这句代码!加上这句代码就可心执行了


    过好今天!
    2011年9月19日 2:03