ah that's what I thought, but wasn't certain as it wouldn't be all that applicable to the conversation...but my fault for throwing it in to the conversation so to very briefly illustrate what it solves, per Wikipedia, the basic principal states:
A. High-level modules should not depend on low-level modules. Both should depend on abstractions.
B. Abstractions should not depend upon details. Details should depend upon abstractions.
Basically (and I mean very basically), if you think of this in terms of real world objects such as a usb device and usb port....you wouldn't solder a usb device directly to a usb port -- don't put all your eggs in one basket ... separate your dependencies so that you would merely be swapping a connection and not end up having to change your entire application
fortunately, considering ODP.NET requires its own methods, I created a little bit of a "LINQ to ORACLE" language via lambda expressions which meant that I really didn't have to do much more than swapping the connection.