我有一个我似乎无法解决的问题。我有多个情况,我需要检索N:N数据,其中只有关系一方的ID。
例句:我需要找到培训的所有学员,这是N:N。我有培训ID,我该如何查询?
我尝试了以下方法:在本例中:
培训员
训练
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’和名称为‘逻辑’的实体。
向你问好,安东尼
发布于 2021-12-21 10:59:09
这里只需要一个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的关系。
https://stackoverflow.com/questions/70433292
复制相似问题