@ouelletf - Stephenmcd1's answer is the answer I would have given you (and my thanks to him). It is the way I would do it.
Do realize that once you have tried to reach the BOS from a client AppDomain, you are committed to that BOS address henceforth. A bunch of statics are set and we don't look at the IdeaBladeConfig again for that information.
Here at IdeaBlade we have discussed options for resetting that choice dynamically. Let me know if this is critical to you.
I do not understand the question about specifying a DataSourceKeyResolver to the EntityManager nor do I fathom the notion of providing an EntityManager with a connection string.
You never provide the EntityManager with a connection string. We don't want connection strings residing on the client; bad for security.
To switch data source contexts (which is the point of our DataSourceExtension facility), you provide a newly created EntityManager (EM) with a string, the "DataSourceExtension". This string is bundled with your requests for persistence operations. The BOS solders this extension (e.g., "Foo") to the DataSourcekey embedded in the operation request (e.g., "Default") yielding a full DataSourceKey ("Default_Foo") to be resolved by the DataSourceKeyResolver on the Server.
Let me repeat that phrase "on the Server". The Resolver is always on the server, never on the client. The Resolver is a class that implements IDataSourceKeyResolver - a class you define in one of your custom assemblies. You deploy that assembly into one of the locations mentioned in your server-side config as a "Probe Assembly" location. DevForce finds it and uses it instead of our default Resolver.
Any DataSourceKeyResolver takes the combined key (base + extension = "Default_Foo") and translates it to an EDM Key holding the proper connection string.
All of this is described in the Developers Guide better than I'm doing here; I'm just trying to give you the sense of it.
Our default DataSourceKeyResolver uses information inside your config file. Your Resolver (which implements IDataSourceKeyResolver) can do anything you want, including delegate to the default DevForce Resolver. Many people write a Resolver that calls out to some server-side connection string provider that they can maintain by whatever means feels convenient; it could be an Excel spreadsheet.
Hope this helps.