The catalog overwrites works this way: suppose you have two original catalogs 'HumanResources' and 'Sales'. This works perfectly, but maybe at production environment they have different names like 'NewHumanResources' and 'NewSales'. Then you can make that change in your config:
<configSections>
<section name="sqlServerCatalogNameOverwrites" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<sqlServerCatalogNameOverwrites>
<add key="HumanResources" value="NewHumanResources" />
<add key="Sales" value="NewSales" />
</sqlServerCatalogNameOverwrites>
... or at runtime:
var overwrites = new CatalogNameOverwriteHashtable();
overwrites.Add("HumanResources", "NewHumanResources");
overwrites.Add("Sales", "NewSales");
using (var adapter = new DataAccessAdapter(..., overwrites, ...))
{
...
}
For this purpose, using the config file is enough, unless you don't know your new catalog name in advance, but at runtime, like when you change the database depending on the logged user.
You cannot change the database per table basis, like: now this table is in this catalog and this other is in this one. The tables you initially mapped stay in the original catalogs, all you can do is change the catalog name.
Hope this is clear.