我想通过给定属性获取实体。ServiceClient。检索方法需要Id,但我想为此使用属性。有什么建议吗?
在Dynamics 365中有一个QueryByAttribute
方法(文档https://learn.microsoft.com/en-us/power-apps/developer/data-platform/org-service/use-querybyattribute-class),但是它很少使用并且有局限性。
您应该使用QueryExpression
(文档https://learn.microsoft.com/en-us/power-apps/developer/data-platform/org-service/use-queryexpression-class)。文档示例可以简化,例如,如果只有一个带有AND条件的条件(默认条件),代码将是:
QueryExpression query = new QueryExpression("contact");
query.ColumnSet = new ColumnSet("firstname", "lastname");
query.Criteria.AddCondition("lastname", ConditionOperator.Equal, "Brown");
EntityCollection result = service.RetrieveMultiple(query);
对于更复杂的查询,您需要设置FilterExpression。
有一些工具可以帮助您构建查询,例如FetchXML生成器(XrmToolBox工具)可以从FetchXML生成c# QueryExpression,您可以使用该工具构建。
注意:QueryExpression
最多返回5000条记录,如果需要检索5000条以上的记录,需要使用分页。