如何从插件中访问组织?

时间:2013-08-08 09:36:44

标签: dynamics-crm-2011

我正在阅读一些写得很糟糕的代码,而我的大脑刚刚关闭,主要是因为沮丧,所以问题可能很简单。

我在插件中,我需要创建一个实体 Blobb 的新实例。鉴于我已完成查询表达式,我该如何执行它?我是否必须创建 OrganizationServiceProxy 对象,还是可以使用发送到执行方法的 IServiceProvider 实例?我正在使用它来获取上下文(即 IPluginExecutionContext 类型对象)但我找不到带有执行查询表达式的方法的服务。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这个。您可以使用LocalPluginContext

来执行“执行”
public class OrgPlugin: Plugin
{
    public OrgPlugin()
        : base(typeof(OrgPlugin))
    {
        base.RegisteredEvents.Add(new Tuple<int, string, string, Action<LocalPluginContext>>(20, "Create", "account", new Action<LocalPluginContext>(ExecuteOrgPlugin)));
    }

    protected void ExecuteOrgPlugin(LocalPluginContext localContext)
    {
        Blobb blobb = new Blobb();
        blobb["new_name"] = "abc";
        // Other attributes here
        localContext.OrganizationService.Execute(blobb);
    }
}

修改

您可以从OrganizationService

中提取localContext.OrganizationService
IOrganizationService service = localContext.OrganizationService;

答案 1 :(得分:1)

看看我对基本插件样本的类似问题的回答。

Microsoft CRM 2011 Plugins - Simple Issue