【问题标题】:CRM 2011 PLUGIN to update another entityCRM 2011 PLUGIN 更新另一个实体
【发布时间】:2013-12-23 20:55:32
【问题描述】:

我的插件在 Entity A 上触发,在我的代码中,我正在调用一个 Web 服务,该服务返回一个 XML 文件,其中包含 的一些属性(attr1、attr2、attr3 等...)实体 B,包括 GUID。 我需要使用从 Web 服务收到的属性来更新实体 B。

我可以使用服务上下文类 (SaveChanges) 吗?或者什么是完成我的任务的最佳方式? 如果你能提供一个例子,我将不胜感激。

【问题讨论】:

  • 您自己尝试过吗?你在什么事件上开火?它作用于哪些实体?是 CRM Online 还是内部部署?
  • 这是 CRM On Premise,它正在更新。

标签: dynamics-crm-2011


【解决方案1】:

在这种情况下,您没有理由需要使用服务上下文。这是我将如何解决此要求的基本示例。您显然需要更新此代码以使用适当的实体、实现外部 Web 服务调用并处理字段更新。此外,它没有任何应该包含在生产代码中的错误检查或处理。

我假设您使用的是早期绑定实体类,否则您需要更新代码以使用通用 Entity()

class UpdateAnotherEntity : IPlugin
{

    private const string TARGET = "Target";

    public void Execute(IServiceProvider serviceProvider)
    {

        //PluginSetup is an abstraction from: http://nicknow.net/dynamics-crm-2011-abstracting-plugin-setup/
        var p = new PluginSetup(serviceProvider);

        var target = ((Entity) p.Context.InputParameters[TARGET]).ToEntity<Account>();

        var updateEntityAndXml = GetRelatedRecordAndXml(target);

        var relatedContactEntity =
            p.Service.Retrieve(Contact.EntityLogicalName, updateEntityAndXml.Item1, new ColumnSet(true)).ToEntity<Contact>();

        UpdateContactEntityWithXml(relatedContactEntity, updateEntityAndXml.Item2);

        p.Service.Update(relatedContactEntity);

    }

    private static void UpdateContactEntityWithXml(Contact relatedEntity, XmlDocument xmlDocument)
    {
        throw new NotImplementedException("UpdateContactEntityWithXml");
    }

    private static Tuple<Guid, XmlDocument> GetRelatedRecordAndXml(Account target)
    {
        throw new NotImplementedException("GetRelatedRecordAndXml");
    }


}

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2011-11-17
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多