如何在IPlugin上下文中更新Dynamics CRM 4.0自定义属性

时间:2011-08-12 13:17:28

标签: plugins dynamics-crm-4

我正在处理插件上下文中的默认实体(email)的自定义(扩展)属性,尽管该方法适用于创建(.Add()),但它不适用于更新(也不是.Update()方法)。这是实际的代码:

public class EmailPreCreateHandler : IPlugin
{
        DynamicEntity dynamicEntity;

        if (context.InputParameters.Properties.Contains("Target")
            && context.InputParameters.Properties["Target"] is DynamicEntity)
        {
            dynamicEntity = (DynamicEntity)context.InputParameters.Properties["Target"];

            if (dynamicEntity.Name != EntityName.email.ToString()) { return; }
        }
        else { return; }

        try
        {
            if (dynamicEntity.Properties.Contains("new_property1")
                || dynamicEntity.Properties.Contains("new_property2"))
            {
                var new_property3 = new CrmBooleanProperty("new_property3", new CrmBoolean(true));
                dynamicEntity.Properties.Add(new_property3);
            }
        }
        catch (SoapException exception)
        {
            throw new InvalidPluginExecutionException(
                "An error occurred with the plug-in.", exception);
        }
    }
}

我想知道我是否应该这样做才能让它发挥作用?

dynamicEntity.Properties.Remove(new_property3);
dynamicEntity.Properties.Add(new_property3);

注册详情

(大会)

  • 位置:数据库

(步骤)

  • 消息:创建
  • 主要实体:电子邮件
  • 次要实体:无
  • 过滤属性:所有属性
  • 在用户的上下文中运行:呼叫用户
  • 执行顺序:1
  • 事件管道执行阶段:前期

我真的很感激任何反馈。非常感谢,

1 个答案:

答案 0 :(得分:2)

如果new_property3new_property1存在,您似乎会添加/更新new_property2

if (dynamicEntity.Properties.Contains("new_property1") || dynamicEntity.Properties.Contains("new_property2"))
{
  dynamicEntity["new_property3"] = new CrmBoolean(true);
}

如果您为 访问权限访问dynamicEntity["new_property3"],则会创建该属性(如果该属性不存在)或覆盖现有值。