D365 FO OData无法读取扩展数据类型Hours字段及EdmType错误求助
针对D365 F&O工时表PowerBI报表Hours字段缺失及EdmType错误的解决方案
问题背景
基于TSTimesheetLineWeek表或继承TSTimesheetLineEntity创建的自定义数据实体,通过OData连接PowerBI/Excel时,包含7天工时的扩展数据类型(EDT)Hours字段缺失,同时出现unable to resolve the type name '' to an EdmType错误,SQL查询可正常看到该字段。
解决步骤
检查扩展数据类型的OData导出配置
打开D365的扩展数据类型设计器,定位到对应Hours的EDT(如TSHoursPerDay):- 将
Is Exportable属性设为Yes - 勾选
Data Contract Attribute属性
保存后同步数据库,重新发布数据实体。
- 将
修正数据实体字段映射
打开自定义数据实体设计器:- 删除现有Hours相关字段,重新从TSTimesheetLineWeek表添加对应字段
- 确认每个字段的
Data Type关联到正确的EDT,而非手动指定基础类型 - 确保
Is Computed属性设为No(非计算字段场景) - 执行生成数据实体→同步数据库→发布实体流程。
修复EdmType解析错误
该错误由元数据生成不完整导致,执行以下操作:- 在Visual Studio的D365项目中,右键项目依次执行Build和Synchronize Database
- 进入D365的数据管理模块,运行实体存储元数据刷新作业,选择目标自定义实体
- 访问
https://<你的环境URL>/odata/$metadata,按Ctrl+F5强制刷新,确认元数据中是否已包含Hours字段。
备选方案:拆分单个日期字段
若EDT批量字段仍无法暴露,可在自定义实体中手动添加7个独立字段,分别映射到TSTimesheetLineWeek表的MonHours、TueHours等列,字段类型设为Real,OData可正常识别并同步到PowerBI/Excel。验证实体发布状态
在D365的数据实体列表中检查目标实体:- 确认状态为
已发布 - 勾选公开OData选项
- 点击查看OData元数据,确认Hours字段已存在,若不存在则重新发布实体。
- 确认状态为
内容的提问来源于stack exchange,提问作者Ivan Pk
相关产品推荐
相关产品推荐

