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;
}
}
}