如何为下面的查询编写QueryExpression
本文关键字:查询 QueryExpression | 更新日期: 2023-09-27 18:19:12
我试图在动态crm 4.0写一个插件。以下是我的取回查询工作良好。我测试了fetchxml Builder。但当我试图转换成QueryExpression它不返回任何结果。
<fetch mapping='logical'>
<entity name='new_involvedperson'>
<attribute name='new_ageattimeofincident'/>
<filter type='and'>
<condition attribute='new_personid' operator='eq' alias='new_InvolvedPersonID' value='{70B1E0F8-9205-E111-9C76-005056A44AF5}'/>
<condition attribute='new_roletype' operator='eq' value='1'/>
</filter>
<link-entity name='new_person' from='new_personid' to='new_personnameid'>
<attribute name='new_firstname'/>
<attribute name='new_lastname'/>
<attribute name='new_dateofbirth'/>
</link-entity>
</entity>
</fetch>
我正在尝试编写以下代码,但它总是返回0记录
ColumnSet cols = new ColumnSet();
// Set the properties of the column set.
cols.Attributes.Add("new_ageattimeofincident");
// Create the condition expression.
ConditionExpression condition = new ConditionExpression();
condition.AttributeName = "new_personid";
condition.Operator = ConditionOperator.Equal;
condition.Values = new object[1];
condition.Values[0] = incidentId;
//ConditionExpression condition1 = new ConditionExpression();
//condition1.AttributeName = "new_roletype";
//condition1.Operator = ConditionOperator.Equal;
//condition1.Values = new object[1];
//condition1.Values[0] = roleType;
// Build the filter based on the condition.
FilterExpression filter = new FilterExpression();
filter.FilterOperator = LogicalOperator.And;
filter.Conditions.Add(condition);
//filter.Conditions.Add(condition1);
// Create a LinkEntity to link the owner's information to the account.
LinkEntity link = new LinkEntity();
link.LinkCriteria = filter;
link.LinkToEntityName = "new_person";
link.LinkToAttributeName = "new_personid";
link.LinkFromEntityName = "new_involvedperson";
link.LinkFromAttributeName = "new_personnameid";
// Create the query.
QueryExpression query = new QueryExpression();
query.EntityName = "new_involvedperson";
query.ColumnSet = cols;
query.LinkEntities.Add( link);
// Create the request object.
RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
retrieve.Query = query;
retrieve.ReturnDynamicEntities = true;
// Execute the request.
RetrieveMultipleResponse retrieved2 = (RetrieveMultipleResponse)service.Execute(retrieve);
return retrieved2.BusinessEntityCollection.BusinessEntities;
尝试使用new AllColumns(),看看是否有效。我似乎记得一个令人沮丧的问题,如果指定的列不包含数据,那么没有记录返回。
尝试以下操作,并在末尾添加您的检索请求代码。
QueryExpression query = new QueryExpression
{
EntityName = "new_involvedperson",
//columns to be included in query
ColumnSet = new ColumnSet(true),
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions =
{
new ConditionExpression("new_personid", ConditionOperator.Equal, "{70B1E0F8-9205-E111-9C76-005056A44AF5}"),
new ConditionExpression("new_roletype", ConditionOperator.Equal, 1),
}
},
LinkEntities =
{
new LinkEntity()
{
LinkFromAttributeName = "new_personid",
LinkToEntityName = "new_person",
LinkToAttributeName = "new_personnameid",
}
}
};