Thd*_*hdK 5 plugins crm dynamics-crm dynamics-crm-2011
我在如何更新刚刚使用其他数据创建的记录方面遇到了严重问题.
案例:我有短信活动.在创建短信记录.插件会自动发送短信.第三方短信提供商负责发送并返回状态字符串.根据这些字符串,必须更新sms的状态.
这是我的一些代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
每次执行插件时,插件中都出现错误.有人可以帮助并解释我在这里做错了什么吗?
谢谢!
Ren*_*ont 12
由于您的插件是同步执行的,因此如果您使用预执行阶段,则应该很容易更新您的实体.
在这种情况下,您可以执行以下操作:
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));
Run Code Online (Sandbox Code Playgroud)
这样,您只需从Attributes dictionnary中添加或更新一个键,它就会被保存,好像该值直接来自表单.
| 归档时间: |
|
| 查看次数: |
19817 次 |
| 最近记录: |