我有一個我自己似乎無法解決的問題。我有多種情況需要僅使用關系一側的 ID 檢索 N:N 資料。
示例:我需要找到 N:N 培訓的所有受訓者。我有培訓 ID 我該如何查詢?
我嘗試了以下操作:在這個例子中:
cursist = Trainee
opleiding = Training
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' 的物體。
最好的問候,安東尼
uj5u.com熱心網友回復:
此處您只需要一個 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);
還要確保您與此名稱具有 N:N 關系 cref8_Opleiding_cref8_Cursist_cref8_Cursi
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388628.html
下一篇:拆分字串如何不包含第一個字符?
