It's present since the beginning of this feature, in 2009. I can imagine people using the 'broken' behavior, namely they get the attributes like 'DataMember' defined on the related field now automatically defined on the Forfs. 'Fixing' this, will break that code and will require them to define the attribute also at the Forf level. Which might be a small task, but it's still a breaking change. We normally won't do that on a bugfix release (which these are, 5.4.4 & 5.5.1).
It sucks, as it's potentially a 1 line change (Line 5023 in Interpreter.cs, change:
case Token.RelatedEntityField:
settingValuesTarget = _currentRelatedEntityField; // Line 5023
break;
Into
case Token.RelatedEntityField:
settingValuesTarget = _currentFieldOnRelatedField;
break;
and it will work properly, but have to check whether it will work in other loops using the same method)
and there's no easy workaround either.
I'm very reluctant to make this change at this point, as it's a breaking change and I really want to schedule this for 5.6. I know that sucks, but it's something we normally won't do as potentially breaking other people's code is something we try to avoid during bugfix releases (5.5.x)
That said, the feature has never worked as intended: defining an attribute on the field mapped on related field was never honored, as the method to obtain the object containing the attribute definitions always returned the object of the related field instead. So in all cases the user using this feature today got the attribute of the related field.
We've to think about it, but for now assume this won't be fixed before 5.6