Orígenes de datos ODBC de Windows y .Net System.Data.Odbc: ¿Qué piloto se utiliza?
-
21-08-2019 - |
Pregunta
Estoy confundido acerca de cómo conectarse a Oracle a través de ODBC.
He creado una fuente de datos ODBC denominado " Oracle " en mi Panel de control> Herramientas administrativas, y se utiliza el controlador "Microsoft ODBC para Oracle".
En mi app.config, tengo las siguientes cadenas de conexión
<?xml version="1.0"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MappingAssistantGui2.Properties.Settings.maConnectionString"
connectionString="Dsn=oracle;uid=ma;pwd=ma" providerName="System.Data.Odbc" />
<add name="MappingAssistantGui2.Properties.Settings.maConnectionStringSqlServer"
connectionString="Dsn=sqlserver;uid=sli;pwd=slislisli" providerName="System.Data.Odbc" />
<add name="MappingAssistantGui2.Properties.Settings.maConnectionStringOracle"
connectionString="Dsn=oracle;uid=ma;pwd=ma" providerName="System.Data.Odbc" />
</connectionStrings>
<startup>
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
En mi código que utiliza el maConnectionString cadena de conexión (la primera). Soy confundir el controlador está siendo utilizado por debajo de:
- Microsoft ODBC para Oracle
- System.Data.Odbc
- ¿Son estos dos iguales?
- O son las clases System.Data.Odbc a través del cual accedo al conductor? Es decir, es "Microsoft ODBC para Oracle" una implementación del acceso ODBC para Oracle, creado por Microsoft?
- Algo más?
¿Debo necesidad haber definido un origen de datos ODBC que se conecta con el espacio de nombres System.Data.Odbc a una base de datos (el que sea de Oracle, SQL Server, MySQL)?
Gracias!
Solución
En la configuración que ha descrito que va a utilizar ambos 'motores'. Técnicamente, System.Data.Odbc no es un conductor, es una proveedor .
Para entender lo que está pasando necesita separar el lado gestionado (.Net) desde el lado nativo (ODBC). El controlador ODBC de Microsoft para Oracle es un controlador para ODBC. Permite a cualquier aplicación capaz de ODBC para conectarse a Oracle. ODBC es un nativa tecnología. En la mano otehr .Net Framwork utiliza Gestionado proveedor de datos por su acceso a los datos. Un proveedor es el proveedor System.Data.Odbc que permite a las aplicaciones .NET para conectarse a cualquier fuente de datos ODBC. Así que cuando su aplicación administrada se conecta a maConenctionString que utiliza el proveedor System.Data.Odbc para conectarse a la fuente ODBC llamado 'oráculo' y el gestor de ODBC se carga el controlador ODBC de Microsoft para Oracle para conectarse a la parte final real.
Ahora que se dice se recomienda el uso de proveedores nativos siempre que sea posible . Así que en lugar de conectar a través del proveedor de ODBC a una fuente de datos ODBC, es mucho mejor si se utiliza directamente el respectivo proveedor nativo como el . proveedor administrado para Oracle Net (para marcos antiguos) o el nuevo System.Data.OracleClient .