Dynamics crm 实体上的CRM SDK OrganizationServiceContext空导航属性

Dynamics crm 实体上的CRM SDK OrganizationServiceContext空导航属性,dynamics-crm,microsoft-dynamics,dynamics-crm-online,dynamics-crm-2016,xrm,Dynamics Crm,Microsoft Dynamics,Dynamics Crm Online,Dynamics Crm 2016,Xrm,尝试将现有解决方案从不推荐的Microsoft.Xrm.Client命名空间迁移到仅使用CrmSDK 9.0.0.5从CrmSvcUtil生成的服务上下文 以前,我们使用Microsoft.Xrm.Client.CodeGeneration.CodeCustomization获取延迟加载的上下文 我有两个相同解决方案的副本,并且一直在处理一些API更改 我已经启用了代理类型 client.OrganizationServiceProxy.EnableProxyTypes(); 据我所知,这使它

尝试将现有解决方案从不推荐的Microsoft.Xrm.Client命名空间迁移到仅使用CrmSDK 9.0.0.5从
CrmSvcUtil
生成的服务上下文

以前,我们使用
Microsoft.Xrm.Client.CodeGeneration.CodeCustomization
获取延迟加载的上下文

我有两个相同解决方案的副本,并且一直在处理一些API更改

我已经启用了代理类型

client.OrganizationServiceProxy.EnableProxyTypes();
据我所知,这使它以一种懒散的方式行动。但是,没有一个导航属性按预期加载

我在
CrmServiceClient
等网站上找到的几篇博客文章表明,即使没有延迟加载,我也应该能够通过调用
Entity.LoadProperty()
手动加载属性,这将加载属性或刷新数据。但是,在这样做之后,导航属性仍然为null(具体地说,我正在尝试使用联系人导航属性)。当我查看
RelatedEntities
集合时,它也是空的

我知道该实体有一个相关的联系人项目,就好像我使用Microsoft.Xrm.Client.CodeGeneration.CodeCustomization生成的上下文一样。它返回它,我还可以使用高级搜索在CRM中看到它

var connectionUri = ConfigurationManager.ConnectionStrings["Xrm"].ConnectionString;
var client = new CrmServiceClient(connectionUri);
client.OrganizationServiceProxy.EnableProxyTypes();
var context = new XrmServiceContext(client);

var result = context.new_applicationSet.FirstOrDefault(x => x.new_applicantid.Id == CurrentUserId);
//result.Contact is null
context.LoadProperty(result, "Contact");
//result.Contact is still null
//result.RelatedEntities is empty

我在我的实例上检查了您的代码,它可以正常工作。我正在使用最新的XrmTooling和最新的Xrm.SDK(都是9.0.0.7)。可能尝试更新SDK的版本?另外,我不知道您的示例是否存在问题,但在您的代码中,您选择了新应用程序实体的所有属性。因此,所有现有值都已存在,因此LoadProperty在这种情况下不会更改任何内容-如果它首先为null,则在调用后将为null,并且您不需要执行
client.OrganizationServiceProxy.EnableProxyTypes()
Xrm。默认情况下,工具会为您执行此操作。