System.Collections.Generic.KeyNotFoundException动态CRM C#查找字段错误

时间:2018-11-13 18:32:22

标签: c# dynamics-crm crm dynamics-crm-2015

我正在尝试使用C#在Dynamics CRM中创建新记录。

下面是我正在使用的代码:

 Entity Record = new Entity("new_edRecord");
 Record["new_year"] = "2100";
 Record["new_school"] = new EntityReference("new_school",new Guid("8ba53949-3947-e445-876c-001dd8b71c19"));
 Record["new_gradelevel"] = "100000018";
 organizationProxy.Create(Record);

执行此操作时,出现以下错误:

  

插件意外的异常(执行):   Department.EdRecord.RecordCreate:   System.Collections.Generic.KeyNotFoundException:给定的密钥不是   出现在字典中。

我通过访问以下网址仔细检查了GUID是否存在一所学校:

https://crm.site.com/orgname/api/data/v8.0/new_schools(8ba53949-3947-e445-876c-001dd8b71c19)

这带来了结果。不确定我在这里缺少什么。

3 个答案:

答案 0 :(得分:3)

如果 new_gradelevel Optionset 类型的字段,则以下代码应为:

Record["new_gradelevel"] = new OptionSetValue(100000018);

还可以确认 new_year 的数据类型为 String

希望有帮助。

答案 1 :(得分:2)

将CRM查询字段命名为实体名称并附加id是常见的约定。

Record["new_school"]应该是Record["new_schoolid"]吗?

OR:

也许值100000018Record["new_gradelevel"]选项集中不存在。也许注释掉那条线,然后看看会发生什么。

答案 2 :(得分:1)

与建议的其他答案一样,请验证所有字段名称/方案名称的正确性。

您可以通过逐一注释字段并执行此代码来查找错误行来进行试验和错误。

最后,(这是我的第一个故障排除步骤)进行交叉检查,以确定在new_edrecord实体创建后或new_school实体的关联上是否还有其他插件。该同步插件可能会抛出此KeyNotFoundException错误,但会在此处冒泡。