检索实体列表

在CRM 2011中,我可以使用EarlyBoundEntities执行常规的创建,更新,删除操作。 但是,我似乎无法找到使用相同类型的代码检索实体列表的示例。 有没有办法使用EarlyBoundEntities检索类型的项目列表?

我查看了MSDN,如果我已经知道它的GUID,我可以找到的是如何检索实体。

// Retrieve the account containing several of its attributes. ColumnSet cols = new ColumnSet( new String[] { "name", "address1_postalcode", "lastusedincampaign" }); Account retrievedAccount = (Account)_service.Retrieve("account", _accountId, cols); Console.Write("retrieved, "); 

例如,我如何获得没有电话号码的所有帐户的列表?

如果您使用servicecontextname参数生成了早期绑定的代理类,那么您可以使用LINQ进行查询。

 var context = new XrmServiceContext(service); var accounts = context.AccountSet.Where(item => item.Telephone1 == null); 

否则,如果您仍想使用其他查询方法(如QueryExpression),则可以使用LINQ将所有实例强制转换为所需的早期绑定类型。

 var contacts = service.RetrieveMultiple(new QueryExpression { EntityName = "contact", ColumnSet = new ColumnSet("firstname") }) .Entities .Select(item => item.ToEntity()); 

如果您愿意,也可以使用扩展方法:

 public static IEnumerable RetrieveMultiple(this IOrganizationService service, QueryBase query) where T : Entity { return service.RetrieveMultiple(query) .Entities .Select(item => item.ToEntity()); } 

用法:

 var contacts = service.RetrieveMultiple(new QueryExpression { EntityName = "contact", ColumnSet = new ColumnSet("firstname") }); 

实际上,MSDN上的SDK中有很多材料可以显示如何查询实体。

创建查询以检索数据

使用LINQ构建查询 – 主要是早期绑定的示例

API提供了三种或多或少相同的方式来查询数据库(LINQ,FetchXml和QueryExpression),尽管有一些限制(例如,参见LINQ限制 ),您只能通过使用本地安装和本机SQL来解决这些问题。调用。

但是,对于您提供的具有空电话号码的帐户的示例,三种支持的查询方法中的任何一种都可以使用。