【发布时间】:2012-03-28 05:15:37
【问题描述】:
我是 CRM 开发的新手。 我有一个自定义实体“客户”。该实体有一个名为“defaultcustomer”的字段,可以是 TRUE 或 FALSE。我正在开发一个插件,我需要将所有“客户”的“defaultcustomer”设置为 FALSE。我这样做如下:
事实:
我已经为实体“客户”本身注册了插件。因此,当实体“客户”更新时,插件会触发。
private void MakeAllNonDefault()
{
try
{
QueryExpression query = new QueryExpression("customer");
query.ColumnSet = new ColumnSet("defaultcustomer");
EntityCollection retrieved = service.RetrieveMultiple(query);
foreach (Entity myCustomer in retrieved.Entities)
{
myCustomer["defaultcustomer"] = false;
service.Update(myCustomer);
}
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException("An error occurred in MakeAllNonDefault(): " + ex.ToString());
}
}
错误: 它在这一行抛出错误:
myCustomer["defaultcustomer"] = false;
System.Collections.Generic.KeyNotFoundException:
The given key was not present in the dictionary.
【问题讨论】:
-
如果您使用早期绑定并将返回的实体强制转换为您的
Customer实体的实例,这种类型的错误就会消失。
标签: dynamics-crm-2011 keynotfoundexception query-expressions