I honestly do not have any good suggestions for this situation. You really should pass the object up your Forms chain and only work on one object. However if you insist on loading new objects in each form then I cannot suggest much. I would load some object
in Form1 and if you need to display another dialog, Form2, I would pass the previously loaded object to it. I do not know why you would load a new object or group object objects.
Alternatively you could pass the subdomain to the new forms. If you do this then you could use that container to load some other collection, which is what I think you are really doing. Use the same subdomain to load one or more collections and they all exist
in the same container. When you call the Persist method on the subdomain (or any collection) all collections will be persisted in the same database transaction.
You are merging two collections into the same subdomain. I suggest you simply load both collection in the same subdomain and never load more than one. This way you are guaranteed to have one copy of everything.
You could load a blank collection like this and get a reference to it.
var collection2 = otherCollection.SubDomain.GetCollection<Acme.TestModel.Business.Objects.AncestorCollection>();
var newItem = collection2.NewItem(); //Add new object to the newly loaded collection
Or you could load a new collection from the database with the predefined select commands or your own custom ones of course.
otherCollection.SubDomain.RunSelectCommands(); //Load from database
var collection2 = parentCollection.SubDomain.GetCollection<Acme.TestModel.Business.Objects.AncestorCollection>();