plugins - 客户关系管理 2011 : How to Update record in a Create Plugin?

标签 plugins dynamics-crm crm dynamics-crm-2011

我在如何更新刚刚使用一些附加数据创建的记录时遇到了严重问题。

案例:我有一个短信事件。创建短信记录。触发一个插件来实际发送短信。第三方短信提供商负责发送并返回状态字符串。根据这些字符串,必须更新短信的状态。

这是我的一些代码:

public void Execute(IServiceProvider serviceProvider)
{
  IPluginExecutionContext context = (IPluginExecutionContext)
  serviceProvider.GetService(typeof(IPluginExecutionContext));

  IOrganizationServiceFactory serviceFactory = 
    (IOrganizationServiceFactory)serviceProvider.GetService(
      typeof(IOrganizationServiceFactory));
  IOrganizationService service = 
    serviceFactory.CreateOrganizationService(context.UserId);
  aContext orgContext = new aContext(service);

  Entity sms = (Entity)context.InputParameters["Target"];
  /// logic goes here

  sms.StatusCode = new OptionSetValue(statuscode); //statuscode is integer
  service.Update(sms);
}

每次执行插件时,我都会遇到插件错误。有人可以帮助我解释一下我在这里做错了什么吗?

谢谢!

最佳答案

由于您的插件是同步执行的,因此如果您使用执行的预操作阶段,那么更新您的实体应该很容易。

在这种情况下,你可以这样做:

Entity sms = (Entity)context.InputParameters["Target"]

// additional code to retrieve status

if(sms.Attributes.Contains("statuscode"))
    sms.Attributes["statuscode"] = new OptionSetValue(statuscode);
else
    sms.Attributes.add("statuscode", new OptionSetValue(statuscode));

这样,您只需添加或更新属性字典中的键,它就会被保存,就像值直接来自表单一样。

关于plugins - 客户关系管理 2011 : How to Update record in a Create Plugin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8167571/

相关文章:

Java 乘法

wordpress - 无法删除旧插件

javascript - MS Dynamics 365 - Iframe - 访问 Xrm - 权限被拒绝

dynamics-crm - Microsoft Dynamics UI准则

dynamics-crm-2011 - 如何在 CRM 2011 插件中阅读电子邮件正文

c# - 语言中立的插件架构

.net - 类似于 .NET Framework 2.0 的 MEF(托管可扩展性框架)

javascript - Crm 2011 - 手动保存后页面仍然是 "dirty"

javascript - 使用 Web API MS CRM 时出现 JSON 错误

dynamics-crm-2011 - Dynamics 365 - 拆分解决方案