首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索N:N关系动态CRM/Dataverse C#插件

检索N:N关系动态CRM/Dataverse C#插件
EN

Stack Overflow用户
提问于 2021-12-21 09:36:50
回答 1查看 576关注 0票数 0

我有一个我似乎无法解决的问题。我有多个情况,我需要检索N:N数据,其中只有关系一方的ID。

例句:我需要找到培训的所有学员,这是N:N。我有培训ID,我该如何查询?

我尝试了以下方法:在本例中:

培训员

训练

代码语言:javascript
运行
复制
if (context.MessageName == "Update" && context.Stage == 20)
    {
        targetEntity = context.InputParameters["Target"] as Entity;

        List<Guid> cursistID = new List<Guid>();
        QueryExpression query = new QueryExpression("cref8_cursist");
        query.ColumnSet = new ColumnSet(new string[] { "cref8_cursistid" });

        LinkEntity linkEntity1 = new LinkEntity("cref8_cursist", "cref8_Opleiding_cref8_Cursist_cref8_Cursi", "cref8_cursistid", "cref8_cursistid", JoinOperator.Inner);
        LinkEntity linkEntity2 = new LinkEntity("cref8_Opleiding_cref8_Cursist_cref8_Cursi", "cref8_opleiding", "cref8_opleidingid", "cref8_opleidingid", JoinOperator.Inner);

        linkEntity1.LinkEntities.Add(linkEntity2);
        query.LinkEntities.Add(linkEntity1);

        linkEntity2.LinkCriteria = new FilterExpression();
        linkEntity2.LinkCriteria.AddCondition(new ConditionExpression("cref8_opleidingid", ConditionOperator.Equal, targetEntity.Id));

        EntityCollection cursistCollection = service.RetrieveMultiple(query);
        if (cursistCollection.Entities.Count > 0)
        {
            foreach (var cursist in cursistCollection.Entities)
            {
                //DO SOME LOGIC
            }
        }

    }

这将导致以下错误:在MetadataCache中找不到名称=‘MetadataCache’和名称为‘逻辑’的实体。

向你问好,安东尼

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 10:59:09

这里只需要一个LinkEntity。

代码语言:javascript
运行
复制
var query = new QueryExpression("cref8_cursist");
query.ColumnSet.AddColumn("cref8_cursistid");
var intersection = new LinkEntity
{
    LinkFromEntityName = "cref8_cursist",
    LinkToEntityName = "cref8_Opleiding_cref8_Cursist_cref8_Cursi",
    LinkFromAttributeName = "cref8_cursistid",
    LinkToAttributeName = "cref8_cursistid",
    JoinOperator = JoinOperator.Inner
};
intersection.LinkCriteria.AddCondition("cref8_opleidingid", ConditionOperator.Equal, targetEntity.Id);
query.LinkEntities.Add(intersection);
var cursistCollection = service.RetrieveMultiple(query);

还要确保您与这个名称cref8_Opleiding_cref8_Cursist_cref8_Cursi有N:N的关系。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70433292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档