Dynamics crm 2011 CRM 2011操作后插件-尝试保存引用的实体时,主实体不存在

Dynamics crm 2011 CRM 2011操作后插件-尝试保存引用的实体时,主实体不存在,dynamics-crm-2011,Dynamics Crm 2011,我正在尝试为现场Dynamics CRM 2011安装创建插件 我已经注册了如下插件: 信息:创建 主要实体:联系人 执行阶段:操作后 执行方式:同步 执行令:1 插件代码如下: public void Execute(IServiceProvider服务提供者) { var pluginExecContext=(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); var o

我正在尝试为现场Dynamics CRM 2011安装创建插件

我已经注册了如下插件:

  • 信息:创建
  • 主要实体:联系人
  • 执行阶段:操作后
  • 执行方式:同步
  • 执行令:1
插件代码如下:

public void Execute(IServiceProvider服务提供者)
{
var pluginExecContext=(IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var orgServiceFactory=(IOrOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrOrganizationServiceFactory));
var orgService=orgServiceFactory.CreateOrganizationService(pluginExContext.UserId);
var orgServiceContext=新的OrganizationServiceContext(orgService);
var tracingService=(ITracingService)serviceProvider.GetService(typeof(ITracingService));
if(pluginExContext.InputParameters.Contains(“目标”)&&
PluginExContext.InputParameters[“目标”]是实体)
{
var target=(实体)pluginExContext.InputParameters[“target”];
if(target.LogicalName!=Contact.EntityLogicalName)
返回;
尝试
{
var customerServicesUser=orgServiceContext.CreateQuery(SystemUser.EntityLogicalName)
.Where(x=>(字符串)x[“全名”]==“客户服务”).FirstOrDefault();
if(customerServicesUser==null)
抛出新的InvalidPlugineExecutionException(“不存在客户服务用户”);
var sendmail=新的cdi\u sendmail
{
cdi_fromrecordowner=false,
cdi_contactid=新的EntityReference(Contact.EntityLogicalName,pluginExContext.PrimaryEntityId),
cdi_fromid=新的EntityReference(SystemUser.EntityLogicalName,customerServicesUser.Id)
};
tracingService.Trace(“PostContactCreate插件:创建cdi_sendemail实体”);
orgService.Create(发送电子邮件);
}
捕获(FaultException-ex)
{
抛出新的InvalidPlugineExecutionException(“PostContactCreate插件中发生错误。”,ex);
}
捕获(例外情况除外)
{
tracingService.Trace(“PostContactCreate插件:{0}”,例如ToString());
投掷;
}
}
}
当我使用pluginregistration工具评测插件并调试故障异常时,我得到以下错误:

Id=abbc7e0a-20a0-e111-a36e-0050568604的联系人不存在

我有点理解为插件是在一个尚未提交的SQL事务中执行的。CRM SDK示例中的“FollowupPlugin”也会创建一个引用实体,它表示需要异步注册该实体,这也是有意义的,因为它允许SQL事务提交

所以我想我的问题是,如何在同步插件中创建引用实体?

查看-我认为您需要在沙盒中注册

在创建消息上,以异步模式为帐户实体注册此插件或者,您可以在沙盒中的post事件上注册插件


非常感谢,更改为沙盒模式使我能够在同步插件中创建一个引用实体,我想我在研究方面过载了,错过了明显的文档。我也有同样的问题,我不能使用沙盒模式,有其他选择吗??