From you perspective you are right, but it is more complicated.
The B object is not really added to the database. If you add A and remove the a->b connection after that the b object is not persisted, only if you call scope.Add(b) you can be sure that b get's store. We name this state 'provisional persistence'.
There are the IInstanceCallbacks which you have to implement at each of your persistent classes to get the PreStore function called. This function is called for all new and dirty objects inside the commit call.
If you make a non persistent base class for all your persistent classes you can implement the interface there and fire your own event.
the Telerik team
Check out Telerik Trainer
, the state of the art learning tool for Telerik products.