Our application's domain model objects have constructors with nontrivial contracts. For example an Entry object requires a Catalog object in order to be created. The problem is, these contracts have to be violated temporarily when I'm doing bulk restore of objects from XML file as the dependent objects might not be available until the backup file is fully processed.
Is there any established pattern or solution to this problem?
There are going to be a number of ways to do this.
What springs to mind is the momento pattern.
It is probably quite apparent that using your current constructor will not get the job done :) --- so you will need to use another method call.
You may use another constructor if you have arguments that can get to it.
In a C# world (I'm sure similar, or better, constructs exist in other languages) you could go as far as to make the method / constructor
internal
and use the InternalsVisibleToAttribute to give your bulk loader access.