C# 将新所有者分配给约会&引用;一项活动只能有一个业主方;

C# 将新所有者分配给约会&引用;一项活动只能有一个业主方;,c#,dynamics-crm,crm,dynamics-crm-2011,C#,Dynamics Crm,Crm,Dynamics Crm 2011,创建新约会时,我需要更改约会记录的所有者。我正在为创建消息使用插件,我发现以下代码可为约会分配新的所有者: entity = context.PostEntityImages["PostImage"]; ...... AssignRequest request = new AssignRequest(); //request.RequestName request.Assignee = new EntityReference("systemuser", owners.ToList()[0]

创建新约会时,我需要更改约会记录的所有者。我正在为创建消息使用插件,我发现以下代码可为约会分配新的所有者:

entity = context.PostEntityImages["PostImage"];

......

AssignRequest request = new AssignRequest();

//request.RequestName
request.Assignee = new EntityReference("systemuser", owners.ToList()[0].Id);
request.Target = new EntityReference(Appointment.EntityLogicalName, entity.Id);
service.Execute(request);
但是当我测试这个时,我得到了以下错误:无效参数:一个活动应该只有一个所有者方

我想我必须先删除当前所有者,然后分配新所有者。但是我该怎么做呢


谢谢你的帮助

看起来有些数据可能已损坏。在该线程中,人们正在推动此人使用SQL直接删除活动的某些所有者-


这只有在您使用Dynamics CRM 2011的内部部署模型时才有可能出现。

我对任务做了类似的操作(在插件中重新分配任务)。作为一个“更新”插件,它没有任何问题,但作为“创建”,它将失败,并显示消息“一个活动应该只有一个所有者方”

要修复此更改,“创建”插件只需设置ownerid(而不是执行AssignRequest)


此代码进入手术前阶段。

感谢您的回复,但我们正在运行IFD。有没有办法不用直接修改数据库就可以做到这一点?我建议您向Microsoft申请支持。如果设置为IFD,则取决于服务器的所有者。如果您有一个合作伙伴在共享环境中托管您的IFD解决方案,他们可能不希望直接对数据库运行不受支持的SQL。如果您正在托管您的IFD解决方案,则由您的it部门决定是否使用它。无论如何,我都会让微软参与进来。我会在周一通知我们的团队。谢谢:)我想我以后还需要这个。谢谢你的回答,即使这个问题是前一段时间提出的。欢迎提供额外信息:)这是否适用于自定义工作流活动?我有一个类似的问题,但它在一个WF中,这真的回答了这个问题吗?请检查以下内容:
Guid id= new Guid("{33011A68-D311-E211-A429-005056820002}");    
 switch (context.MessageName)
                {
                    case "Update":
                        {
                            try
                            {
                                if (ent.Contains("fieldname") == true)
                                {

                                    AssignRequest assign = new AssignRequest
                                    {
                                        Assignee = new EntityReference("systemuser", id),
                                        Target = new EntityReference(ent.LogicalName, ent.Id)
                                    };
                                    _service.Execute(assign);
                                }
                            }
                            catch (Exception ex)
                            {
                                throw new InvalidPluginExecutionException("Error" + Environment.NewLine + "Details: " + ex.Message);
                            }
                        }
                        break;
                }
Guid id= new Guid("{33011A68-D311-E211-A429-005056820002}");    
 switch (context.MessageName)
                {
                    case "Update":
                        {
                            try
                            {
                                if (ent.Contains("fieldname") == true)
                                {

                                    AssignRequest assign = new AssignRequest
                                    {
                                        Assignee = new EntityReference("systemuser", id),
                                        Target = new EntityReference(ent.LogicalName, ent.Id)
                                    };
                                    _service.Execute(assign);
                                }
                            }
                            catch (Exception ex)
                            {
                                throw new InvalidPluginExecutionException("Error" + Environment.NewLine + "Details: " + ex.Message);
                            }
                        }
                        break;
                }