【问题标题】:Is there a way to get the CRM connection from IServiceProvider in a Dynamics CRM Plugin?有没有办法从 Dynamics CRM 插件中的 IServiceProvider 获取 CRM 连接?
【发布时间】:2016-02-02 11:18:38
【问题描述】:

在 CRM 中注册插件并从已触发的事件中启动处理程序似乎很愚蠢,但同时服务提供者不提供对连接上下文的直接访问权限。相反,我读过的所有内容都说我必须重新创建自己的单独 CrmConnection 才能使用。有没有办法通过 GetService() 方法访问类型?

因此,当使用 ServiceContext 名称为“XrmServiceContext”的早期绑定类时,而不是以下:

// "Xrm" is a config file node with applicable creds.
using ( var context = new XrmServiceContext( new CrmConnection( "Xrm" ) ) )
{
...
}

我很想做这样的事情:

public void Execute( IServiceProvider serviceProvider )
{
    var context = serviceProvider.GetService(typeof(CrmConnection));
...
}

那里有这样的东西吗?或者也许比在配置文件中使用节点更好?

【问题讨论】:

    标签: c# plugins dynamics-crm dynamics-crm-2013


    【解决方案1】:

    这是基本的执行实现。 服务可用于与 CRM 交互。

    public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = factory.CreateOrganizationService(context.UserId);
    
            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                Entity target = (Entity)context.InputParameters["Target"];
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多