Dynamics crm 2011 dynamics crm插件在更新消息期间删除实体

Dynamics crm 2011 dynamics crm插件在更新消息期间删除实体,dynamics-crm-2011,dynamics-crm,dynamics-crm-2013,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm,Dynamics Crm 2013,Dynamics Crm Online,当实体仍在插件更新事务中时,是否可以删除该实体 下面的代码似乎不起作用。我需要删除实体时,它得到更新和一些其他情况 比如: protectedvoid ExecutePosAnnotationtUpdate(localpluginontext localContext) { if(localContext==null) { 抛出新ArgumentNullException(“localContext”); } if(localContext.PluginExecutionContext.Dept

当实体仍在插件更新事务中时,是否可以删除该实体

下面的代码似乎不起作用。我需要删除实体时,它得到更新和一些其他情况

比如:

protectedvoid ExecutePosAnnotationtUpdate(localpluginontext localContext)
{
if(localContext==null)
{
抛出新ArgumentNullException(“localContext”);
}
if(localContext.PluginExecutionContext.Depth>1)返回;
实体postEntityImage=null;
if(localContext.PluginExecutionContext.PostEntityImages.Contains(“PostImage”))
{
if(localContext.PluginExecutionContext.PostEntityImages[“PostImage”]!=null)
{
postEntityImage=localContext.PluginExecutionContext.PostEntityImages[“PostImage”];
}
}
实体preEntityImage=null;
if(localContext.PluginExecutionContext.PreEntityImages.Contains(“PreImage”))
{
if(localContext.PluginExecutionContext.PreEntityImages[“PreImage”]!=null)
{
preEntityImage=localContext.PluginExecutionContext.PreEntityImages[“PreImage”];
}
}
if((bool)postEntityImage.Attributes[“isdocument”])
{
如果(某些条件)
localContext.OrganizationService.Delete(postEntityImage.LogicalName,postEntityImage.Id);
}
}

`

因为您正在更新,所以记录在
目标中

public void Execute(IServiceProvider serviceProvider)
{
    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    var service = serviceFactory.CreateOrganizationService(context.UserId);

    var target = context.InputParameters["Target"] as Entity;
    var condition = /* whatever */ 
    if(condition)
    {
        service.Delete(target.LogicalName, target.Id);
    }
}
当附加到
更新
消息、
操作后
异步
时,工作正常。也在
沙盒中工作


记录不会立即消失,这需要一些时间(在我的内部操场上大约20秒)。如果你让它
同步
,它仍然可以工作,但会出现警报,因为数据在更新过程中被CRM处理时会消失。

你是否尝试在异步更新阶段注册你的插件?我很好奇:你是否试图阻止用户上传notes中的文件?@Alex:)是的,几乎你是对的。。我想在更新事件时移动附件如果您在prem上,您可以打开跟踪并查看更详细的错误,以便能够确定发生了什么。