检索N:N关系Dynamics CRM/Dataverse C#插件



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

示例:我需要找到一个培训的所有培训生,这是一个N:N。我有培训ID,如何查询?

我尝试了以下操作:在此示例中:
草书=受训者
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中找不到名称映射为'Logical'、名称为'cref8_Opleiding_cref8_Cursist_cref8_Cursi'的实体。

致以最良好的问候,Anthony

这里只需要一个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关系

最新更新