I think there are two issues here:
(a) The original query should fetch everything that is needed later in the CopyFrom in an efficient manner.
In your case you should have a FetchField attribute set on A's B collection field, and add the fetch
group to the FetchPlan of the scope before doing the query.
In addition to that please set the ParallelFetch property of the result to true. This allows us to just issue
two queries; Optimal!
(b) The fetched data can be GC'ed. In order to avoid that you need to specify
in the backend configuration section of your app.config file manually. This changes the way OpenAccess references data that was read from the server but is not referenced from the user app - like the query result content.
the Telerik team