某实体中有一个虚拟实体的LookUp的字段,为什么触发retrieveMultiple插件时获取到的QueryExpression的ColumnSet为true
时间: 2024-02-21 17:56:32 浏览: 112
当使用retrieveMultiple方法时,返回的QueryExpression对象包含了所有列的信息,而不仅仅是你在查询中指定的列。这是因为在查询过程中,CRM系统需要获取所有列的信息以便进行数据筛选、排序、分页等操作。因此,无论你在查询中指定了哪些列,返回的QueryExpression对象都会包含所有列的信息,包括虚拟实体的LookUp字段。
另外值得一提的是,如果你想要获取实体中某个特定的字段或属性,可以使用ColumnSet类来指定需要获取的列。例如,在retrieveMultiple方法中,你可以使用以下代码来获取某个实体中的指定字段:
```
ColumnSet columns = new ColumnSet("fieldname1", "fieldname2");
QueryExpression query = new QueryExpression("entityname");
query.ColumnSet = columns;
```
这样就只会获取指定的两个字段,而不是所有字段。
相关问题
虚拟实体调用retrieveMultiple插件的查询列怎么设置
虚拟实体的查询列的设置方式与实体是一样的,你需要在查询表达式中指定需要查询的列。以下是示例代码:
```
Entity lookup = (Entity)context.InputParameters["Target"];
//获取虚拟实体中的LookUp字段
EntityReference lookupRef = (EntityReference)lookup["your_lookup_field"];
//根据LookUp字段中的实体名称和Id构建查询表达式
QueryExpression query = new QueryExpression(lookupRef.LogicalName);
query.ColumnSet = new ColumnSet("column1", "column2", "column3"); //指定需要查询的列
query.Criteria.AddCondition(new ConditionExpression("your_entity_id_field", ConditionOperator.Equal, lookupRef.Id));
EntityCollection results = service.RetrieveMultiple(query);
```
在上面的代码中,你可以看到我在查询表达式中指定了需要查询的列,即"column1", "column2", "column3"。你可以根据实际需求来指定需要查询的列。
阅读全文