【问题标题】:CRM Plugin Error The given key was not present in the dictionaryCRM 插件错误 字典中不存在给定的键
【发布时间】:2014-08-02 00:42:29
【问题描述】:

我开发了一个在创建案例实体时触发的 CRM 插件。案例与另一个自定义实体具有 N:1 关系。小故事,当自定义实体中的字段“new_CaseAssign”设置为 1 时,插件将生成分配给 Case Owner 的任务。

但问题是“new_CaseAssign”字段是新添加的,因此大多数自定义实体记录还没有设置此字段,这会导致插件出错“字典中不存在给定键”。如果自定义字段有值,那就没问题了。

处理这种情况的最佳方法是什么?我尝试了 customEntity.Attributes.Contains("new_CaseAssign") 如下代码但没有成功:

var new_CaseAssign = customEntity.Attributes["new_CaseAssign"];

if ((customEntity.Attributes.Contains("new_CaseAssign")) && (bool)new_CaseAssign)
        {
            activityEntity.Attributes.Add("ownerid", incident.Attributes["ownerid"]);
        }
        else 
        { //something else
        }

感谢任何建议。非常感谢。

【问题讨论】:

    标签: c# plugins crm


    【解决方案1】:

    行:

    var new_CaseAssign = customEntity.Attributes["new_CaseAssign"];
    

    可能导致异常。您可以将代码重写为:

    bool new_CaseAssign = false;
    if (customEntity.Attributes.Contains("new_CaseAssign"))
        new_CaseAssign = (bool) customEntity.Attributes["new_CaseAssign"];
    
    if (new_CaseAssign) {
        activityEntity.Attributes.Add("ownerid", incident.Attributes["ownerid"]);
    }
    else { //something else
    }
    

    所以在尝试访问密钥之前首先检查包含。

    【讨论】:

      【解决方案2】:

      Loathing 的回答部分正确,实际上您在检查是否存在之前访问该属性。通常我还会在强制转换之前检查属性是否不为空。

      第二个错误是字段名称,您使用的是后期绑定样式,这意味着您需要使用逻辑名称而不是架构名称,因此字段名称是new_caseassign(全部小写)而不是@ 987654322@.

      if ((customEntity.Attributes.Contains("new_caseassign")) && customEntity.Attributes["new_caseassign"] != null)
      {
          if ((bool)customEntity.Attributes["new_caseassign"])
          {
              activityEntity.Attributes.Add("ownerid", incident.Attributes["ownerid"]);
          }
      }
      else 
      { //something else
      }
      

      【讨论】:

      • 如果 Attributes 是 Dictionary<String,bool>,那么 != null 测试毫无意义......但在我的回答中,(bool) 的演员也是如此。如果您要测试!= null,那么您不妨将其更改为is bool
      • 字典是Dictionary<string,object>
      猜你喜欢
      • 2018-02-21
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      相关资源
      最近更新 更多