【发布时间】:2014-02-08 07:06:53
【问题描述】:
几天前我开始了 MS CRM 开发,今天我花了几个小时在这个非常简单的基本操作上,但没有找到我做错的地方。
我想在创建记录时更新联系人实体的中间名。我可以用下面的代码做到这一点。
但现在我想在打开联系人记录时做同样的事情。我确实在联系实体下注册了检索消息的新步骤。但它不起作用..没有抛出异常。
public class IzzyPlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
try
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity currentEntity = (Entity)context.InputParameters["Target"];
if (currentEntity.Attributes.Contains("middlename"))
{
currentEntity.Attributes["middlename"] = "Middle name changed";
}
else
{
currentEntity.Attributes.Add("middlename", "Middle name changed");
}
service.Update(currentEntity);
}
}
catch (Exception f)
{
throw new InvalidPluginExecutionException(f.ToString());
}
}
}
【问题讨论】:
-
你确定插件正在触发吗?在我看来没问题。用简单的 throw new Exception() 替换您的代码,并验证当您尝试通过 UI 创建联系人时操作已取消。
-
我这样做了。按预期抛出异常。但是,您能否回答更新后的问题。