1

私の質問はこの投稿にかなり関連していますが、すべてのピースをまとめることはできません。以下に示すように、プラグインコードのLinqを介して、 ServiceContextオブジェクトSystemUserを使用してフェッチしようとしています:XrmServiceContext

var serviceFactory = serviceProvider.GetOrganizationServiceFactory();
var service = serviceFactory.CreateOrganizationService(context.UserId);
using (var xrmServiceContext = new XrmServiceContext(service))
{
    var user = xrmServiceContext.SystemUserSet
                   .Where(x => x.SystemUserId.Value == context.UserId)
                   .First();
}

しかし、私は以下を取得していますInvalidCastException:

タイプ 'Microsoft.Xrm.Sdk.Entity' のオブジェクトをタイプ 'Xrm.SystemUser' にキャストできません。

一方、生成されたアーリー バインド クラスCrmSvcUtilは別のアセンブリ (プラグイン アセンブリ以外) に配置されます。

生成されたアーリー バインド クラスをプラグイン アセンブリ内に配置すると、正常に動作するため、これは非常に奇妙です。

私の小さな調査により、別のOrganizationServiceProxyオブジェクトを作成するようになりましたが、既にIOrganizationService使用して作成しているのに、なぜ作成する必要があるのですかserviceFactory.CreateOrganizationService(context.UserId)

では、生成されたコードをプラグイン アセンブリの外に置いて、この問題を解決するにはどうすればよいでしょうか。

4

2 に答える 2

2

別の提案を追加します。プラグインを登録するときにデータベースにプラグインを登録することを選択した場合は、アーリー ボンド アセンブリを C:\Program Files\Microsoft Dynamics CRM\CRMWeb\bin に配置することもできます。

于 2013-07-26T10:53:39.407 に答える