CRM 中的 RetrieveRequest 和 IOrganizationService.Retrieve 有什么区别?
What is the differences between RetrieveRequest and IOrganizationService.Retrieve in CRM?
我是使用 C# 进行 CRM 工作流步骤开发的新手。我需要知道 RetrieveRequest
和 IOrganizationService
中的 Retrieve
之间的主要区别是什么。
什么时候必须使用哪一个?
是否有任何示例可以说明如何以表演者的方式使用此对象 运行?
A RetrieveRequest
和 IOrganizationService
的 Retrieve
方法做完全相同的事情:检索特定记录。
最终 RetrieveRequest
可以被批处理(使用 ExecuteMultipleRequest
消息)但我个人从未看到 RetrieveRequest
被批处理,因为通常 UpdateRequest
或 DeleteRequest
是为了提高性能而批处理的。
在大多数情况下,Retrieve
方法就足够了。
但是 RetrieveRequest
添加了一个有趣的功能:它提供了一次性查询与检索到的对象关联的数据的选项。
假设您需要发票数据及其发票产品记录。一种选择是创建一个 QueryExpression
并加入 invoice 实体和 invoicedetail 实体的结果。这将导致一个可能很大的 table.
使用 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;
}
GetFullInvoice
返回的 Entity
对象有一个 RelatedEntities
属性 保存与发票相关的实体集合。
可以将多个查询添加到 RetrieveRequest
,因此也可以一次性检索关联的活动等。
我是使用 C# 进行 CRM 工作流步骤开发的新手。我需要知道 RetrieveRequest
和 IOrganizationService
中的 Retrieve
之间的主要区别是什么。
什么时候必须使用哪一个?
是否有任何示例可以说明如何以表演者的方式使用此对象 运行?
A RetrieveRequest
和 IOrganizationService
的 Retrieve
方法做完全相同的事情:检索特定记录。
最终 RetrieveRequest
可以被批处理(使用 ExecuteMultipleRequest
消息)但我个人从未看到 RetrieveRequest
被批处理,因为通常 UpdateRequest
或 DeleteRequest
是为了提高性能而批处理的。
在大多数情况下,Retrieve
方法就足够了。
但是 RetrieveRequest
添加了一个有趣的功能:它提供了一次性查询与检索到的对象关联的数据的选项。
假设您需要发票数据及其发票产品记录。一种选择是创建一个 QueryExpression
并加入 invoice 实体和 invoicedetail 实体的结果。这将导致一个可能很大的 table.
使用 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;
}
GetFullInvoice
返回的 Entity
对象有一个 RelatedEntities
属性 保存与发票相关的实体集合。
可以将多个查询添加到 RetrieveRequest
,因此也可以一次性检索关联的活动等。