Of course you can, this is where the real benefits of a well-designed Data Access Layer (DAL) come in to play.
I would say:
Create an abstract DAL layer (i.e. one that doesnt care which managed provider it is using) this one should be accessed by you client code. The client code would need a reference to a concrete (subclass) of this abstract DAL passed to it.
Then you design the concrete DAL, one for each managed provider. Implementing all the required methods (e.g. GetCustomerDetails or whatever).
Then, at run time you select what provider you wish to use (either by user selection, or most likely, app.config). It passes the concrete DAL to the client code, transparantly allowing access to that data source.
Key Design Point: Encapsulate what varies
I hope this steers you in the right direction :)
Rob
The Developing Developer
Currently Working Towards:
MCAD C#
My Blog: http://www.robzyc.spaces.live.com
<center>
"Nothing can stop the man with the right mental attitude from achieving his goal;
nothing on earth can help the man with the wrong mental attitude".
Thomas Jefferson</center>