Dynamics crm 2011 字典插件CRM 2011 online中不存在给定的密钥
谁能告诉我我做错了什么,我已经试了一个多星期了 遵循代码 插件出现意外异常(执行): Microsoft.Crm.Sdk.Samples.ProjectTotalAmount: System.Collections.Generic.KeyNotFoundException:未找到给定的密钥 出现在字典里Dynamics crm 2011 字典插件CRM 2011 online中不存在给定的密钥,dynamics-crm-2011,Dynamics Crm 2011,谁能告诉我我做错了什么,我已经试了一个多星期了 遵循代码 插件出现意外异常(执行): Microsoft.Crm.Sdk.Samples.ProjectTotalAmount: System.Collections.Generic.KeyNotFoundException:未找到给定的密钥 出现在字典里 namespace Microsoft.Crm.Sdk.Samples { 公共类项目总额:IPlugin { public void Execute(IServiceProvider服务提供程
namespace Microsoft.Crm.Sdk.Samples
{
公共类项目总额:IPlugin
{
public void Execute(IServiceProvider服务提供程序)
{
Microsoft.Xrm.Sdk.IPluginExecutionContext上下文=(Microsoft.Xrm.Sdk.IPluginExecutionContext)serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));
if(context.InputParameters.Contains(“目标”)&&
context.InputParameters[“Target”]是实体)
{
IOOrganizationServiceFactory serviceFactory=(IOOrganizationServiceFactory)serviceProvider.GetService(类型为(IOOrganizationServiceFactory));
IOOrganizationService=serviceFactory.CreateOrganizationService(context.UserId);
//创建服务上下文
var servicecoxt=新的OrganizationServiceContext(服务);
//ITracingService tracingService=localContext.tracingService;
实体=(实体)上下文。输入参数[“目标”];
if(entity.LogicalName==“新建项目”)
{
Guid projectGUID=((EntityReference)实体[“新项目]).Id;
实体a=service.Retrieve(“new_project”,((EntityReference)Entity[“new_project”]).Id,new ColumnSet(true));
小数总数=0;
尝试
{
//fetchxml以获取estimatedvalue的总和
string new\u amount\u sum=string.Format(@)
“,a.Id);
EntityCollection new_amount_sum_result=service.RetrieveMultiple(新的FetchExpression(new_amount_sum));
foreach(新金额和结果实体中的var c)
{
totalAmount=((Money)((别名Value)c[“新金额”).Value);
}
//更新帐户上的字段
实体acc=新实体(“新_项目”);
acc.Id=a.Id;
根据属性添加(“新金额”,新金额(总金额));
服务更新(acc);
}
捕获(FaultException-ex)
{
抛出新的InvalidPluginExecutionException(“插件中发生错误。”,ex);
}
}
}
}
}
}
插件的设置:
验证后
同步执行模式
服务器部署在我们开始查看您的代码之前,有几点建议可以帮助您
- 此错误通常表示代码引用的属性不存在(或没有值)
- 你还没有说你的插件注册在哪条消息上。这可能会影响运行时的可用参数
- 您已经注释掉了
变量,但这至少可以帮助您了解代码的进展情况。恢复它并添加一些类似这样的行来跟踪失败前的进度。此信息将写入客户端异常对话框中提供给您的错误日志中:tracingService
tracingService.Trace("Project Id is {0}", projectGUID);`
- 以下行似乎完全多余,因为您只使用了
中的属性a
,并且该属性已作为Id
存在:entity.Id
Entity a=service.Retrieve(“new_project”,((EntityReference)Entity[“new_project]”)Id,new ColumnSet(true))代码>
tracingService.Trace("Number of returned records: {0}", new_amount_sum_result.Entities.Count);`