Question: I have a .NET solution with 4 library projects resulting in 4 assemblies.

There are classes in these assemblies that generate some partial information in a linear workflow. 
By information=generated I mean some business logic information inclusive of timestamp, # of records etc.
The final table into which this information has to be inserted contains 16 columns...each of these assemblies have loggable information for just 4 columns.
My objective is to aggregate all this information and log it to the database in a single DB call...instead of doing it 4 times.

To be more clear, a class in namespace A which (namespace/assembly A imports/uses B and C)... instantiatesa class inside B and C respectively .

I do not have access to information generated in methods inside B and C classes in the class in namespaceA. But I want to aggregate all of the information and push it to the database in a single insert.

How should I approach this problem?
I want to persist the data across all these different assemblies and log the data to the databse in a single call.How can I persist the data?

Answer: 
If I understand what you're asking, then it doesn't make sense.

If you have individual classes generating data that should be logged, then these individual classes should log the data. No other class should have to know which data the individual classes find interesting.

Let your logging framework deal with bundling the logging information into an appropriate number of database calls. That's an implementation detail of the logging framework.
As far as I can interpret the question, I suspect you might benefit from an aggregator class (a [Collecting Parameter](http://www.industriallogic.com/xp/refactoring/accumulationToCollection.html) or even a more complicated [Visitor](http://www.industriallogic.com/xp/refactoring/accumulationToVisitor.html)) that visits each information generating class, compiles data, and can then eventually be asked to publish the compiled data somewhere else.