When a relation collection is resolved, a query is executed against the underlying data source (or parent transaction) in order to load all collection items into the ClientTransaction. The collection is then built from the items currently in the ClientTransaction, and is ready to be used.
When the data source now changes and, by ID, query, or via a different relation, an additional object is loaded that has a foreign key qualifying it as a collection item, the item's relation is marked as "unsynchronized". The relation can be read, but not changed, and the item is not made part of the collection. Only when the user uses the new BidirectionalRelationSyncService (with the Synchronize method) is the relation synchronized: the item is included into the collection and the relation can be changed again. BidirectionalRelationSyncService also provides an IsSynchronized method allowing to check whether a relation property is in-sync with the opposite property.