我的问题与这篇文章非常相关,但我无法将所有部分组装在一起。我正在尝试通过插件代码中的 LinqSystemUser
使用ServiceContext对象进行获取,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)
那么如何通过将生成的代码保留在插件程序集之外来解决这个问题呢?