C# Dynamics CRM插件,用于输入发布值,搜索订阅,如果找到,请在创建/更新时将其添加到联系人

C# Dynamics CRM插件,用于输入发布值,搜索订阅,如果找到,请在创建/更新时将其添加到联系人,c#,dynamics-crm-online,C#,Dynamics Crm Online,下面的代码似乎在创建联系人时起作用,对于输入值发布,它搜索并关联现有订阅。但同样的代码不适用于联系人的更新。关于我的插件为什么会出现这种情况,有什么看法吗 如果String.IsNullOrEmptypublication { //查询现有出版物 var publicationQuery=新的QueryByAttributesDynHCP_publicationnewsletter; //publicationQuery.ColumnSet.AllColumns=true; publicatio

下面的代码似乎在创建联系人时起作用,对于输入值发布,它搜索并关联现有订阅。但同样的代码不适用于联系人的更新。关于我的插件为什么会出现这种情况,有什么看法吗

如果String.IsNullOrEmptypublication { //查询现有出版物 var publicationQuery=新的QueryByAttributesDynHCP_publicationnewsletter; //publicationQuery.ColumnSet.AllColumns=true; publicationQuery.Attributes.AddRangeMDynHCP_publicationname; publicationQuery.Values.AddRangepublication; publicationQuery.TopCount=1; //呼叫查询 EntityCollection PublicationId=organizationService.RetrieveMultiplepublicationQuery; 如果PublicationId.Entities.Count>0 { //查询现有订阅 var subscriptionQuery=新QueryExpressionmsdynhcp\u订阅; var linkedContact=新LinkEntitymsdynhcp_订阅,联系人,msdynhcp_联系人查找,联系人+id,JoinOperator.Inner; linkedContact.LinkCriteria=新的FilterExpressionLogicalOperator.And; linkedContact.LinkCriteria.AddConditioncontact+id,ConditionOperator.Equal,ContactId; subscriptionQuery.LinkEntities.AddlinkedContact; var linkedPublication=新的LinkEntitymsdynhcp_订阅、msdynhcp_publicationnewsletter、msdynhcp_publicationlookup、msdynhcp_publicationnewsletter+id、JoinOperator.Inner; linkedPublication.LinkCriteria=new FilterExpressionLogicalOperator.And; linkedPublication.LinkCriteria.AddConditionmsdynhcp_publicationnewsletter+id,ConditionOperator.Equal,PublicationId[0]。id; subscriptionQuery.LinkEntities.AddlinkedContact; subscriptionQuery.TopCount=1; //呼叫查询 EntityCollection SubscriptionId=organizationService.RetrieveMultiplesubscriptionQuery; 如果subscriptionId.Entities.Count==0 { //新订阅 var crmSubscription=新实体同步订阅; crm订阅[msdynhcp_utcdatetimestamp]=DateTime.UtcNow; crm订阅[msdynhcp_enabledactive]=true; //调用创建 var id=organizationService.CreatecrmSubscription; //呼叫助理 organizationService.Associatemsdynhcp\u订阅,id,新关系msDynhcp\u联系人\u新订阅\u联系人查找, 新EntityReferenceCollection新列表{new EntityReferencecontact,new GuidContactId}; //呼叫助理 organizationService.Associatemsdynhcp_订阅,id,新关系msDynhcp_新出版物时事通讯(新出版物)查找, 新EntityReferenceCollection新列表{new EntityReferencemsdynhcp_publicationnewsletter,PublicationId.Entities[0].Id}; } } }
为了教一个人钓鱼而不是告诉你出了什么问题,你为什么不自己调试一下呢?您可以使用插件注册工具来发布整个插件逻辑。

您没有发布整个插件逻辑,但如果它在创建时起作用,而在更新时不起作用,那么很可能您希望插件中有一个根本不存在的属性。当您创建一个实体时,您必须至少在web表单上填写所有必填字段,并且所有这些属性都在插件的InputParameters中的目标中。但当您更新实体时,只有被修改的属性位于InputParameters的目标中,当然还有一些标准属性,如modifiedon、modifiedby等。。所以,最有可能的情况是,你的插件会检查某个属性是否为空。这第一次检查发布内容看起来很可疑,但我无法判断是否为空,因为它不是完整的代码。为了确保该属性存在,请从PostImage/PreImage not Target获取该属性,请参见:

Define“wont work”。它抛出异常?发布消息。Id未引发错误,但联系人未更新?你为什么得出这样的结论?更新后是否正在刷新organizationService?它不会引发任何异常,但不会使用相关订阅更新联系人。总之,contact会在更新后保存,不会添加订阅,即使发布与订阅关联,也不会引发异常。更新后我没有刷新organizationService,是吗?您能进一步澄清吗?谢谢这不是答案:你妈妈不是答案@GuidoPreite。。。哈哈哈