尝试将现有解决方案从已弃用的Microsoft.Xrm.Client命名空间迁移到仅使用来自CrmSvcUtil
的生成的服务上下文,使用CrmSDK 9.0.0.5。
以前我们使用Microsoft.Xrm.Client.CodeGeneration.CodeCustomization
来获取延迟加载的上下文。
我有两个相同解决方案的副本,并且已经完成了一些API更改。
我启用了代理类型
client.OrganizationServiceProxy.EnableProxyTypes();
根据我的理解,将其转换为以懒惰的方式行事。但是,没有任何导航属性按预期加载。
我在CrmServiceClient
等转换过程中发现的一些博客文章表明,即使没有延迟加载,我也应该能够通过调用Entity.LoadProperty()
来手动加载属性。加载属性或刷新数据。但是,在执行此操作后,导航属性仍为null(特别是我尝试使用Contact导航属性)。当我查看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