通过DataEntity导入数据时,有一些private field的值,没有在数据的文件里指定,所以需要用代码来设定值,类似于在Table插入数据时的值自动设定。通过继承mapEntityToDataSource()来实现。

    public void mapEntityToDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx)
    {
        super(_entityCtx, _dataSourceCtx);

        if (_dataSourceCtx.name() == dataEntityDataSourceStr(XXX_DimensionAttributeEntity, XXX_DimensionAttribute))
        {
            XXX_DimensionAttributeEntity dimAttriEntity = _entityCtx.getEntityRecord();
            XXX_DimensionAttribute dimAttri = _dataSourceCtx.getBuffer();
            dimAttri.DimensionAttribute = DimensionAttribute::findByName(this.DimensionAttributeName).RecId;
        }
    }

参考资料

D365FO – AX – Update Data Entity Target Entity fields with X++