我正在尝试在案例结束时更新特定字段。我将插件注册为关闭消息上的Pre Operation事件。我的注册活动如下。
base.RegisteredEvents.Add(new Tuple<int, string, string, Action<LocalPluginContext>>(20, "Close", "incident", new Action<LocalPluginContext>(ExecutePreCaseCloseFolder)));
并且,在Execute方法中,我有以下代码
Entity incidentResolution = (context.InputParameters != null && context.InputParameters.Contains("IncidentResolution")) ? (Entity)context.InputParameters["IncidentResolution"] : null;
Incident incident = (localContext.OrganizationService.Retrieve("incident", ((EntityReference)incidentResolution["incidentid"]).Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true))).ToEntity<Incident>();
string documentSetURL = CloseCase(incident);
incident.new_documentSetURL = documentSetURL;
但是,它没有更新该字段。当我关闭一个案例时,我的插件会被触发,我可以调试并看到更新的documentSetURL正在应用于incident.new_documentSetURL。
那么,为什么不更新。
如果我没有错,则预操作是在验证完成之后但在保存值之前。并且,我在保存之前更新了一个值。我的理解不正确吗?
答案 0 :(得分:0)
关闭事件时,您无法更新事件。因此,您必须在创建IncidentResolution之前更新您的案例。
在您的插件中,您必须更新您检索到的案例:service.Update(incident);
。通过这种方式,您可以确保在创建事件解决方案之前更新案例。
看看http://nickhollis.blogspot.pt/2013/04/crm-2011-plugin-to-update-case-incident.html。