0

CRMプラグインでfetchxmlを使用する必要がありますが、その方法の例をここで見つけました。

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したがって、プラグインを作成するには、メソッドを1つだけ持つを実装する必要があります。

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 に答える