>Here's what I'm finding...
>
>Any object in FoxPro that runs a query, whether against native DBFs or Sql Server, will create the cursor in the DataSession which was active at the time the object was created.
>
>The means that if you have a BO created in Form A with a Private DataSession, and you pass that object to Form B which has its own Private DataSession, if you use the object to run a query from Form B, the cursor will be created in the DataSession from Form A.
>
>Crazy! But true. It took be about an hour of stepping through the codez to figure this out.
>
>
Does anyone know a work around, or a pattern to avoid this??It has always been so, but you have to go deep in building your framework to notice :).
So tricks to avoid the regular behavior are many, the most popular being
- pass your result as xml to the other DS
- pass your .dataSessionID to the object's code, and switch to it while the query executes
- make sure your object is not too heavy and entangled with the rest of them, and instantiate it in your local DS.