Dynamics 365 v8.2:如何使EntityMetadata.HasActivities属性正常赋值?
在Dynamics 365 Online中获取可关联活动的表列表遇到的问题
问题背景
我需要在Dynamics 365 Online中获取所有可关联活动(Activities)的表列表,原本打算借助Microsoft.Xrm.Sdk.Metadata.EntityMetadata类的HasActivities属性来实现,但实际操作中遇到了异常情况。
尝试的代码及异常结果
我先后使用RetrieveAllEntitiesRequest和RetrieveEntityRequest请求元数据,但返回的HasActivities属性值始终为null:
var req = new RetrieveAllEntitiesRequest { EntityFilters = EntityFilters.Entity }; var all = (RetrieveAllEntitiesResponse)svc.Execute(req); var hasActivities = all.EntityMetadata .Where(m => m.HasActivities == true) .Select(m => m.LogicalName) .OrderBy(n => n) .ToList(); // hasActivities的数量为0,因为所有实体的m.HasActivities都是null var account = all.EntityMetadata.First(m => m.LogicalName == "account"); var req2 = new RetrieveEntityRequest { EntityFilters = EntityFilters.All, MetadataId = (Guid)account.MetadataId }; var accountAll = (RetrieveEntityResponse)svc.Execute(req2); var accountHasActivites = accountAll.EntityMetadata.HasActivities; // accountHasActivities仍然是null
相关验证结果
- XrmToolbox的Metadata Browser显示Account表的
HasActivities属性为false - 在Maker UI中可以确认,Account表很早就支持关联活动(对应“创建新活动时将此表设为选项”复选框处于勾选状态)
- 检查本地v8.0(CRM 2016)实例的SQL数据库,
MetadataSchema.Entity表以及dbo.EntityView等相关视图中均不存在HasActivities列 - 微软官方Metadata Browser中也未显示
HasActivities属性
核心疑问
- 有没有办法通过SDK让
EntityMetadata.HasActivities属性正常返回有效值? - Maker UI是如何正确判断并填充“创建新活动时将此表设为选项”复选框状态的?
补充说明
根据Guido的反馈,该问题仅存在于Dynamics 365 Online v8.2(具体版本为v8.2.19.13)中,在v9及以上版本里,HasActivities属性可以正常工作。感谢Guido的分享!
内容的提问来源于stack exchange,提问作者Aron
相关产品推荐
相关产品推荐

