使用XRM SDK从ms dynamics crm获取相关数据

本文关键字:获取 数据 crm dynamics XRM SDK ms 使用 | 更新日期: 2023-09-27 18:12:15

我正在尝试从。net应用程序中的crm检索数据,使用SDK。我已经设法做了一些简单的查询来检索列表,但是我现在想要获得带有项目的相关实体,而不是id。

我试过

QueryExpression query = new QueryExpression
  {
    EntityName = "opportunity",
....
LinkEntity linkEntityAccount = new LinkEntity()
 {
    LinkFromEntityName = "opportunity",
    LinkFromAttributeName = "opportunityid",
    LinkToEntityName = "serviceappointment",
    LinkToAttributeName = "regardingobjectid",
    JoinOperator = JoinOperator.Inner,
    Columns = new ColumnSet(new string[] { "scheduledstart", "scheduledend" }),
    EntityAlias = "service"
 };
query.LinkEntities.Add(linkEntityAccount);

(这将返回机会表中的实体集合)

然而,LinkedEntities只是将这两列放在返回实体中。

我想要的是(在本例中)将entity.serviceappointment作为包含服务约会实体/数据的实体。而不是在实体中有service.scheduledstartservice.scheduledend等字段

我已经在SDK中查看了RelationshipRelationshipQueryCollection的东西,但我无法设置一个查询,将做查询,而不首先获得opportunity实体。但看起来这可能是我需要的?我不确定。

这可能吗?还是应该继续逐个查询实体?

谢谢

使用XRM SDK从ms dynamics crm获取相关数据

QueryExpression中,LinkEntity代表一个连接。这就是为什么连接表的字段位于Entity行。它们可以与"真正的"实体属性区分开来,因为它们的名称有前缀(包括一个点),它们的值被包装在AliasedValue对象中。

可以打开它们并创建强类型的Entity对象,但是您需要自己编写代码。

或者你可以考虑一些其他的选择:

  1. 查询serviceappointment记录并加入opportunity记录
  2. 使用RetrieveRequest逐个检索opportunity记录,并在请求中包含对相关服务约会的查询。(参见关于StackOverflow的讨论)
  3. 在方便的OrganizationResponse中创建一个返回所有数据的Action。

没有自动的方法来获得我所知道的整个链接实体数据(作为Entity对象)(这并不是说这是不可能的,请注意)。

但是我认为在另一个请求中查询你需要的数据会容易得多。

  • 查找您需要的机会列表
  • 使用关于对象id作为第二个查询的"IN"过滤器的参数。