簡體   English   中英

檢索 N:N 關系 Dynamics CRM/Dataverse C# 插件

[英]Retrieve N:N relationship Dynamics CRM/Dataverse C# Plugin

我有一個我自己似乎無法解決的問題。 我有多種情況需要僅使用關系一側的 ID 檢索 N:N 數據。

示例:我需要找到 N:N 培訓的所有學員。 我有培訓 ID 如何查詢?

我嘗試了以下方法:在此示例中:
cursist = 實習生
opleiding = 培訓

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 中找不到名稱 = 'cref8_Opleiding_cref8_Cursist_cref8_Cursi' 且名稱映射 = 'Logical' 的實體。

最好的問候,安東尼

您在這里只需要一個 LinkEntity。

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 關系

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM