De eenvoudigste manier om het probleem uit te leggen, is door te wijzen op het verschil tussen de Oracle Client- en de ODAC-clientbibliotheken.
Op een 64-bits machine (Windows 7+) moet u de 64-bits Oracle Client hebben geïnstalleerd. Dit is de client die uw computer zal gebruiken om verbinding te maken met Oracle-databases die lokaal op uw computer zijn geïmplementeerd. Voor apps die op een webserver of een andere terminalserver worden gehost, is de regel hetzelfde.
De truc is dit... als ontwikkelaar moeten onze machines ook de .Net IDE-tooling hebben. Oracle heeft een waardeloze naamgevingsconventie, maar in wezen zijn er 2 delen:ODT (tooling) en ODAC (gegevenstoegang). De ODP.Net-gegevensprovider maakt deel uit van de ODAC-bibliotheken.
Dus... terug naar de IDE... Visual Studio is 32-bits en daarom moeten we bovenstaande tooling in 32-bit installeren.
Tijdens het ontwikkelen, debuggen, enz. gebruikt VS.Net de 32-bits clientbibliotheken en gegevenstoegangsbibliotheken om met Oracle te werken.
Zodra u deze toepassing op een machine implementeert, gebruikt deze de client die op de machine is geladen, tenzij een specifiek platform is bedoeld.
Dit betekent dat als je 32 target en naar 64 implementeert, het zal breken ... en vice versa. Het beste is om het op elk platformgedeelte te laten staan en gewoon te onthouden wat je in godsnaam aan het doen bent :)
Het andere waar je voorzichtig mee moet zijn, is ervoor te zorgen dat zowel je Client- als ODAC-pakketten van dezelfde versie zijn ... je wilt geen 11g R2-client en 11g R5 ODAC hebben, want zodra je implementeert, breekt de crap weer.
Het voorbehoud hier is als u de Oracle-client in uw applicatie wilt "embedden", in welk geval OraOps samen met verschillende andere bibliotheken met de applicatie wordt geïmplementeerd - dit wordt Oracle's Instant Client genoemd en is ook een onderdeel van het ODAC-pakket en wordt meegeleverd ook in hun volledige klantenpakket.
Het goede nieuws...
Oracle zal binnenkort (2013 Q1) hun volgende ODP.Net-pakket uitbrengen... dat een volledig beheerde codebibliotheek zal zijn... wat betekent dat er geen afzonderlijke client of ODAC-pakket meer is om te matchen, en het platform zal onwetend zijn van 32 en 64-bits onderscheidingen... het zal net zo werken als de oude microsoft-bibliotheek, alleen zal het worden gebouwd en onderhouden door Oracle met een robuustere functieset. Ik zou alleen willen dat het eerder zou aankomen.