给定的关键是不存在的字典查找CRM C#插件(the given key was not prese

2019-10-30 05:01发布

我有一些代码使用C#在CRM插件来检索查找值。 这很简单,阅读查找的GUID,然后表现出来异常。

//Get ParentCaseID
Guid HeaderId = ((EntityReference)entity["new_LookupTransactionHeader"]).Id;

throw new InvalidPluginExecutionException(HeaderId.ToString());

在这段代码我只是想从查找的GUID,但是当我运行该插件我得到的错误是这样的。

给定的关键是不存在的字典

Answer 1:

代码应该是自explenatory:

if(entity.Contains("new_LookupTransactionHeader")){
  Guid HeaderId = ((EntityReference)entity["new_LookupTransactionHeader"]).Id;
  throw new InvalidPluginExecutionException(HeaderId.ToString());
}
else
{
  throw new InvalidPluginExecutionException("There is no value in field new_LookupTransactionHeader.");
}


Answer 2:

使用entity["attribute"]索引访问底层的Attribute属性其是AttributeCollection对象,它的行为就像Dictionary<string, object>

在这种情况下,字典中不包含你的关键new_LookupTransactionHeader -这可能是因为你质疑从CRM中的数据,该值是null的CRM,在这种情况下,CRM省略从字典中(即使你特别要求它的价值一个ColumnSet )。

如果该键存在于字典试图访问它之前,您可以可以检查,如entity.Attributes.HasKey("new_LookupTransactionHeader")

你也可以使用entity.GetAttributeValue<EntityReference>("new_LookupTransactionHeader")这将返回null如果该键犯规存在(而不是抛出异常。



Answer 3:

Guid HeaderId; 

if (entity.Attributes.Contains("new_LookupTransactionHeader"))
{
 Guid HeaderId= ((EntityReference)entity["new_LookupTransactionHeader"]).Id; 
}

剩下的可以自己添加,如果包含返回false,它不存在



文章来源: the given key was not present in the dictionary lookup CRM C# Plugin