Data entity: initializing value from related record on insert

When working with data entities in X++, initializing values during an insert operation from a related table is a common requirement. In this post, we will examine how the ASLineEntity data entity ensures that field values are set based on related ASHeader record when a new record is inserted.

public class ASLineEntity extends common
{
    public void mapEntityToDataSource(DataEntityRuntimeContext _entityCtx, DataEntityDataSourceRuntimeContext _dataSourceCtx)
    {
        super(_entityCtx, _dataSourceCtx);

        switch (_dataSourceCtx.name())
        {
            case dataEntityDataSourceStr(ASLineEntity, Line):
                ASLine line = _dataSourceCtx.getBuffer();
 
                switch (_entityCtx.getDatabaseOperation())
                {
                    case DataEntityDatabaseOperation::Insert:
                        ASHeader header = ASHeader::find(this.Id);
                        line.Field1 = header.Field1;   
                        break;
                }
                break;
        }
    }
}