0

我需要在 CRM 插件中使用 fetch xml,我在这里找到了一个关于如何做到这一点的示例:

string groupby1 = @" 
    <fetch distinct='false' mapping='logical' aggregate='true'> 
     <entity name='opportunity'>
      <attribute name='name' alias='opportunity_count' aggregate='countcolumn' />  
      <attribute name='ownerid' alias='ownerid' groupby='true' />
      <attribute name='createdon' alias='createdon' /> 
      <attribute name='customerid' alias='customerid' /> 
     </entity> 
    </fetch>";

    EntityCollection groupby1_result = orgProxy.RetrieveMultiple(new FetchExpression(groupby1));

但是还有其他东西我不知道如何使用,或者它在哪里使用..它的部分说:

orgProxy.RetrieveMultiple(new FetchExpression(groupby1));

我知道它是OrganizationServiceProxy的一个对象,但它在插件类中的什么位置?我查不出来。

4

1 回答 1

6

以最礼貌的方式,您可能需要后退几步才能前进。

所以要写一个插件,你需要实现IPlugin,它只有一个方法

public void Execute(IServiceProvider serviceProvider)

IServiceProvider是您进入 CRM 的窗口以及您所关注的事件的上下文。

通常,您会执行以下操作:

var context = (IPluginExecutionContext) serviceProvider.GetService(typeof (IPluginExecutionContext));
var factory = (IOrganizationServiceFactory) serviceProvider.GetService(typeof (IOrganizationServiceFactory));
var service = factory.CreateOrganizationService(context.UserId);

在上面的例子中,service是类型IOrganizationService。这为您提供了您期望的所有方法

service.Execute(foo);
service.RetrieveMultiple(bar);
service.Update(... /* etc

可能值得回顾一下这方面的一些指南 - 正如我在之前的回答中给出的那样

于 2013-01-23T20:55:25.627 回答