Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CRM插件错误字典中不存在给定的密钥_C#_Plugins_Crm - Fatal编程技术网

C# CRM插件错误字典中不存在给定的密钥

C# CRM插件错误字典中不存在给定的密钥,c#,plugins,crm,C#,Plugins,Crm,我开发了一个CRM插件,它在创建案例实体时被触发。案例与另一个自定义实体具有N:1关系。简而言之,当自定义实体的“new_casesign”字段设置为1时,插件将生成分配给案例所有者的任务 然而,问题是“new_casesign”字段是新添加的,因此大多数自定义实体记录尚未设置此字段,这导致插件出错为“字典中不存在给定的键”。如果自定义字段有值,那么就没有问题 处理这种情况的最佳方法是什么?我尝试了customEntity.Attributes.Contains(“new_casesassign

我开发了一个CRM插件,它在创建案例实体时被触发。案例与另一个自定义实体具有N:1关系。简而言之,当自定义实体的“new_casesign”字段设置为1时,插件将生成分配给案例所有者的任务

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

处理这种情况的最佳方法是什么?我尝试了customEntity.Attributes.Contains(“new_casesassign”),类似于下面的代码,但没有成功:

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
        }
如有任何建议,我们将不胜感激。非常感谢。

线路:

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
}

因此,在尝试访问密钥之前,首先检查包含。

Loating的答案部分正确,事实上,您是在检查是否存在之前访问属性的。通常,我还会在强制转换之前检查属性it是否为null

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

if((customEntity.Attributes.Contains(“new\u casesassign”))和&customEntity.Attributes[“new\u casesassign”!=null)
{
if((bool)customEntity.Attributes[“new_casesassign”])
{
activityEntity.Attributes.Add(“ownerid”,incident.Attributes[“ownerid]”);
}
}
其他的
{//还有别的吗
}

如果属性是
字典
,则
!=null
测试是无意义的。。。但在我的回答中,对
(bool)
的演员阵容也是如此。如果您要测试
!=空
那么您最好将其更改为
is bool
。字典是
字典