C# Id为“”的错误帐户;xxxxxx“;不存在
我有一个创建帐户和商机的客户工作流程 有时我会出现以下错误:Id为“xxxxxx”的帐户不存在 如果知道我在CRM中找到了帐户,我不知道我的代码有什么问题。C# Id为“”的错误帐户;xxxxxx“;不存在,c#,dynamics-crm,dynamics-crm-online,dynamics-crm-365,C#,Dynamics Crm,Dynamics Crm Online,Dynamics Crm 365,我有一个创建帐户和商机的客户工作流程 有时我会出现以下错误:Id为“xxxxxx”的帐户不存在 如果知道我在CRM中找到了帐户,我不知道我的代码有什么问题。 以下是我的插件代码的步骤: 按num查找帐户(如果不存在,则创建帐户) 获取帐户=帐户 创建一个opportunity[“parentaccountid”]=Account的opportunity 错误信息 代码: //获得机会 Guid id=retrieveOpportunity(“opportunity”、“new_numero”、n
以下是我的插件代码的步骤:
//获得机会
Guid id=retrieveOpportunity(“opportunity”、“new_numero”、numero、service);
实体机会;
if(id!=Guid.Empty)
{
eOpportunity=新实体(“机会”,id);
}
其他的
{
eOpportunity=新实体(“机会”);
}
//算帐
EntityReference eAccount=retrieveAccount(accountCode,“account”,“new_code”,service);
if(eAccount==null)
{
eAccount=新实体(“账户”、“新代码”、账户代码);
eAccount[“name”]=“name”;
UpsertRequest usMessage=新的UpsertRequest()
{
目标=eAccount
};
//创建帐户
UpsertResponse usResponse=(UpsertResponse)this.\u service.Execute(usMessage);
eOpportunity[“parentaccountid”]=usResponse.Target;
}
其他的
{
eOpportunity[“parentaccountid”]=eAccount;
}
UpsertRequest req=新的UpsertRequest()
{
目标=机会
};
//抢机会
UpsertResponse resp=(UpsertResponse)服务执行(req);
如果(分别创建记录)
tracer.Trace(“新机遇”);
其他的
tracer.Trace(“机会更新”);
有时会有多个工作流同时启动并执行相同的操作(创建其他机会)您没有向我们展示整个插件,因此这只是一个猜测,但您可能在类级别共享您的IOrganizationService,这会在代码中造成争用条件,一个线程在不同的上下文中创建一个新帐户,然后它的服务被另一个线程覆盖,而另一个线程位于不同的数据库事务中,该事务没有新创建的帐户,并且它出错
不要跨线程共享IOrganziationService 当您试图在同一事务中使用创建的记录时,请将插件转换为异步模式-这将起作用。向我们显示实际代码而不是伪代码:)