Dynamics crm 2011 关联联系人的电话号码未在线更新CRM 2011

Dynamics crm 2011 关联联系人的电话号码未在线更新CRM 2011,dynamics-crm-2011,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm Online,我正在尝试更新帐户实体的所有关联联系人的电话号码。下面是我使用的代码 公共类插件:IPlugin { public void Execute(IServiceProvider服务提供程序) { IPluginExecutionContext上下文=(IPluginExecutionContext) GetService(typeof(IPluginExecutionContext)); 实体; if(context.InputParameters.Contains(“目标”)&& context

我正在尝试更新帐户实体的所有关联联系人的电话号码。下面是我使用的代码

公共类插件:IPlugin
{
public void Execute(IServiceProvider服务提供程序)
{
IPluginExecutionContext上下文=(IPluginExecutionContext)
GetService(typeof(IPluginExecutionContext));
实体;
if(context.InputParameters.Contains(“目标”)&&
context.InputParameters[“Target”]是实体)
{
实体=(实体)上下文.InputParameters[“目标”];
if(entity.LogicalName!=“account”){return;}
}
其他的
{
返回;
}
尝试
{
string telephoneNum=string.Empty;
IOOrganizationServiceFactory serviceFactory=(IOOrganizationServiceFactory)serviceProvider.GetService(类型为(IOOrganizationServiceFactory));
IOOrganizationService=serviceFactory.CreateOrganizationService(context.UserId);
var id=(Guid)context.OutputParameters[“id”];
telephoneNum=entity.GetAttributeValue(“电话1”);
UpdateContact(服务、id、电话号码);
}
捕获(FaultException-ex)
{
抛出新的InvalidPlugineExecutionException(
“插件中发生错误。”,ex);
}
}
私有静态void UpdateContact(IOOrganizationService服务,Guid id,字符串电话号码)
{
使用(var crm=new XrmServiceContext(服务))
{
var res=来自crm.CreateQuery(“联系人”)中的c
其中c[“parentcustomerid”]等于(id)
选择c;
foreach(以res表示的var c)
{
实体e=(实体)c;
e[“电话1”]=电话号码;
crm.UpdateObject(e);
}
SaveChanges();
}
}
}

我在更新时注册插件,并注册主要实体“account”,但每当我在电话字段中更改号码后尝试保存帐户表单时,我都会看到一个错误弹出。我错过什么了吗?谢谢大家!

只是一种预感..但我认为您获取Id的方式不对..请尝试通过以下方式获取:

Guid Id = context.PrimaryEntityId

但正如Pedro所建议的那样,您需要查看确切的错误是什么,或者尝试使用“附加到进程”调试插件。

您能否指定弹出的错误。如果是一般性错误,请激活或使用此获取完整的错误信息。谢谢大家!我猜我正在使用的“CRM实例”有问题。当我将我的插件添加到一个新实例时,它起了作用。再次感谢大家。