我在事件实体中有子网格名为跟踪和位置。现在,我想检索子网格值的名称,并将这些值存储在文本字段中。在路径列表字段中,如果它是关联的,我需要添加以逗号分隔的跟踪名称。如果不关联,则需要删除特定的值表单文本字段。.I是插件的新成员。我尝试了查询表达式,但对于使用筛选条件的跟踪和事件实体,我没有任何常见的字段。有谁能提出快速实现这一目标的方法吗?我尝试了以下代码:
if (context.MessageName.ToLower() == "associate")
{
// Obtain the target entity from the input parameters.
Entity eventEntity = new Entity("leap_event");
var pathwayList ="" ;
QueryExpression query = new QueryExpression("leap_event");
query.ColumnSet = new ColumnSet(true);
LinkEntity linkEntity1 = new LinkEntity("leap_event", "leap_leap_event_leap_location", "leap_eventid", "leap_eventid", JoinOperator.Inner);
LinkEntity linkEntity2 = new LinkEntity("leap_leap_event_leap_location", "leap_location", "leap_locationid", "leap_locationid", JoinOperator.Inner);
linkEntity1.LinkEntities.Add(linkEntity2);
query.LinkEntities.Add(linkEntity1);
linkEntity2.LinkCriteria = new FilterExpression();
linkEntity2.LinkCriteria.AddCondition(new ConditionExpression("", ConditionOperator.Equal, ""));
EntityCollection collRecords = service.RetrieveMultiple(query);
tracingService.Trace("load");
for (int i = 0; i < collRecords.Entities.Count; i++)
{
tracingService.Trace("load1");
var result = collRecords.Entities[i].GetAttributeValue<string>("leap_name");
Console.WriteLine(result);
pathwayList += result + ",";
tracingService.Trace("pathwayName" + pathwayList);
eventEntity["leap_pathwayList"] = pathwayList;
}
} 发布于 2022-09-27 09:08:17
您将不得不为您的链接实体使用别名。以下面的示例为例。
我有帐户实体-> (N:N)列表成员实体-> (N:N)列表实体。
在你的情况下
leap_event实体-> ( N:N ) leap_leap_event_leap_location实体->(很可能是N:n或1:N) leap_event_leap_location实体。
此外,当您检索属性时,您必须使用GetAttributeValue<AliasedValue>,查看一下这篇文章,它将帮助您理解
// Instantiate QueryExpression query
var query = new QueryExpression("account");
// Add columns to query.ColumnSet
query.ColumnSet.AddColumns("name", "accountid");
// Add link-entity listmemberentity
var listmemberentity = query.AddLink("listmember", "accountid", "entityid");
listmemberentity.EntityAlias = "listmemberentity";
// Add link-entity listentity
var listentity = listmemberentity.AddLink("list", "listid", "listid");
listentity.EntityAlias = "listentity";
// Add columns to listentity.Columns
listentity.Columns.AddColumns("listname");发布于 2022-10-08 08:46:50
没有必要使用链接实体。
QueryExpression必须直接在关联实体上执行,筛选器在查找字段上执行(我假设"leap_location“实体上的"leap_eventid”字段):
if (context.MessageName.ToLower() == "associate")
{
var query = new QueryExpression("leap_location");
query.ColumnSet.AddColumn("leap_name");
// Lookup filter
query.Criteria.AddCondition(new ConditionExpression("leap_eventid", ConditionOperator.Equal, context.TargetEntity.Id));
// Optional statecode filter
query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
var collRecords = service.RetrieveMultiple(query);
if (collRecords.Entities.Count > 0)
{
var pathwayList = string.Empty;
foreach (var location in collRecords.Entities)
{
pathwayList += location.GetAttributeValue<string>("leap_name") + ",";
tracingService.Trace($"pathwayName {pathwayList}");
}
}
var eventEntity = new Entity("leap_event", context.TargetEntity.Id)
{
["leap_pathwayList"] = pathwayList
};
service.Update(eventEntity); // Update required for PostOperation Plugin
}https://stackoverflow.com/questions/73829587
复制相似问题