私の質問はこの投稿にかなり関連していますが、すべてのピースをまとめることはできません。以下に示すように、プラグインコードの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)
では、生成されたコードをプラグイン アセンブリの外に置いて、この問題を解決するにはどうすればよいでしょうか。