使用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.scheduledstart
和service.scheduledend
等字段
我已经在SDK中查看了Relationship
和RelationshipQueryCollection
的东西,但我无法设置一个查询,将做查询,而不首先获得opportunity
实体。但看起来这可能是我需要的?我不确定。
这可能吗?还是应该继续逐个查询实体?
谢谢
在QueryExpression
中,LinkEntity
代表一个连接。这就是为什么连接表的字段位于Entity
行。它们可以与"真正的"实体属性区分开来,因为它们的名称有前缀(包括一个点),它们的值被包装在AliasedValue
对象中。
可以打开它们并创建强类型的Entity
对象,但是您需要自己编写代码。
或者你可以考虑一些其他的选择:
- 查询
serviceappointment
记录并加入opportunity
记录 - 使用
RetrieveRequest
逐个检索opportunity
记录,并在请求中包含对相关服务约会的查询。(参见关于StackOverflow的讨论) - 在方便的
OrganizationResponse
中创建一个返回所有数据的Action。
没有自动的方法来获得我所知道的整个链接实体数据(作为Entity
对象)(这并不是说这是不可能的,请注意)。
但是我认为在另一个请求中查询你需要的数据会容易得多。
- 查找您需要的机会列表
- 使用关于对象id作为第二个查询的"IN"过滤器的参数。