我是 CRM 开发的新手。
我有一个自定义实体“客户”。该实体有一个名为“defaultcustomer”的字段,可以是 TRUE 或 FALSE。我正在开发一个插件,我需要将所有“客户”的“defaultcustomer”设置为 FALSE。我正在这样做:
FACTS:
我已经为实体“客户”本身注册了插件。因此,当实体“客户”更新时,插件就会触发。
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());
}
}
ERROR:它在这一行抛出错误:
myCustomer["defaultcustomer"] = false;
System.Collections.Generic.KeyNotFoundException:
The given key was not present in the dictionary.
该错误意味着特定字段不存在于属性集合中。在 CRM 中,仅包含已设置或更新的属性。
尝试类似的方法:
foreach (Entity myCustomer in retrieved.Entities)
{
if (myCustomer.Attributes.ContainsKey("defaultcustomer"))
{
myCustomer["defaultcustomer"] = false;
}
else
{
myCustomer.Attributes.Add("defaultcustomer", false);
}
service.Update(myCustomer);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)