我是C#的CRM工作流程开发新手。我需要知道RetrieveRequest
中Retrieve
和IOrganizationService
之间的主要区别。
何时必须使用哪一个?
是否有任何示例来说明如何使用此对象以表演者的方式运行?
答案 0 :(得分:1)
在大多数情况下,Retrieve
方法就足够了。
然而RetrieveRequest
增加了一个有趣的功能:它提供了一次查询与检索到的对象相关联的数据的选项。
想象一下,您需要发票数据及其发票产品记录。一种选择是创建QueryExpression
并加入发票实体和invoicedetail实体的结果。这将导致一个可能很大的表。
使用RetrieveRequest
,您可以在一个请求中查询与检索到的实体关联的记录。
一个例子:
private readonly IOrganizationService _service;
public Entity GetFullInvoice(Guid invoiceId)
{
var request = new RetrieveRequest
{
ColumnSet = new ColumnSet(allColumns: true),
Target = new EntityReference("invoice", invoiceId),
RelatedEntitiesQuery = new RelationshipQueryCollection()
};
var relation = new Relationship("invoice_details");
relation.PrimaryEntityRole = EntityRole.Referenced;
var invoiceDetailQuery = new QueryExpression("invoicedetail");
invoiceDetailQuery.ColumnSet = new ColumnSet(allColumns: true);
invoiceDetailQuery.Criteria.AddCondition("invoiceid", ConditionOperator.Equal, invoiceId);
var result = (RetrieveResponse)_service.Execute(request);
return result.Entity;
}
Entity
返回的GetFullInvoice
对象的RelatedEntities
属性包含与发票相关的实体集合。
可以向RetrieveRequest
添加多个查询,因此也可以一次性检索相关活动等。
答案 1 :(得分:0)
RetrieveRequest
和Retrieve
IOrganizationService
方法完全相同:检索特定记录。
最终RetrieveRequest
可以进行批处理(使用ExecuteMultipleRequest
消息),但我个人从未看到RetrieveRequest
批处理,因为通常UpdateRequest
或DeleteRequest
是为了提高性能而进行了一次批量处理。