Cómo conectarse a la base de datos Oracle 11 desde . neto

Resuelto PrivateJoker asked hace 8 años • 1 respuestas

¿Cuál es la forma más sencilla de conectar un . NET a una base de datos Oracle 11g? ¿Puede EntityFramework manejar esto desde el primer momento? ¿O necesitaré algún tipo de complemento ODBC de Oracle?

*Estoy ejecutando desde un entorno bloqueado, por lo que no puedo probar ninguno de estos escenarios en este momento.

Actualmente estoy ejecutando VS2010, pero estoy buscando si me permiten ejecutar VS2013 (sin nuget).

PrivateJoker avatar Jan 15 '16 08:01 PrivateJoker
Aceptado

Conozco 17 formas de conectarme a una base de datos Oracle desde una aplicación .NET.

  • ODBC con controlador de Oracle

     var connectString = "Driver={Oracle in OraClient11g_home1};Uid=scott;Pwd=secret;DBQ=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    

    (el nombre exacto del controlador Oracle in OraClient11g_home1depende de la versión de Oracle instalada)

  • ODBC con controlador de Microsoft (solo para 32 bits, en desuso , ya no funciona con Oracle Client 18c o posterior)

     var connectString = "Driver={Microsoft ODBC for Oracle};Uid=scott;Pwd=secret;Server=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • Proveedor de Oracle para OLE DB

     var connectString = "Provider=OraOLEDB.Oracle;Data Source=orcl1;Password=secret;User ID=scott";
     var con = new System.Data.OleDb.OleDbConnection(connectString);
     con.Open();
    
  • Proveedor Microsoft OLE DB para Oracle (solo para 32 bits, en desuso , ya no funciona con Oracle Client 18c o posterior)

     var connectString = "Provider=MSDAORA;Data Source=orcl1;Password=secret;User ID=scott";
     var con = new System.Data.OleDb.OleDbConnection(connectString);
     con.Open();
    
  • Proveedor de datos de Microsoft .NET Framework para Oracle ( en desuso )

     var connectString = "Data Source=orcl1;User ID=scott;Password=secret";
     var con = new System.Data.OracleClient.OracleConnection(connectString);
     con.Open();
    
  • Proveedor de datos de Oracle para .NET (ODP.NET)

     var connectString = "Data Source=orcl1;User ID=scott;Password=secret";
     var con = new Oracle.DataAccess.Client.OracleConnection(connectString);
     con.Open();
    
  • Proveedor de datos de Oracle para .NET, controlador administrado (controlador administrado ODP.NET)

     var connectString = "Data Source=orcl1;User ID=scott;Password=secret";
     var con = new Oracle.ManagedDataAccess.Client.OracleConnection(connectString);
     con.Open();
    
  • dotConnect para Oracle de Devart (anteriormente conocido como OraDirect .NET de Core Lab)

     var connectString = "Data Source=orcl1;User ID=scott;Password=secret";
     var con = new Devart.Data.Oracle.OracleConnection(connectString);
     con.Open();
    
  • dotConnect Universal de Devart (usa obsoleto System.Data.OracleClient)

     var connectString = "Provider=OracleClient;Data Source=orcl1;User ID=scott;Password=secret";
     var con = new Devart.Data.Universal.UniConnection(connectString);
     con.Open();
    
  • ODBC con controlador de Devart

     var connectString = "Driver={Devart ODBC Driver for Oracle};Uid=scott;Pwd=secret;Server=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • DataDirect Connect para ADO.NET de Progress

     var connectString = "Data Source=orcl1;User ID=scott;Password=secret";
     var con = new DDTek.Oracle.OracleConnection(connectString);
     con.Open();
    
  • ODBC con controlador de Progress

     var connectString = "Driver={DataDirect 8.0 Oracle Wire Protocol};Uid=scott;Pwd=secret;ServerName=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • ODBC con el controlador Oracle de Easysoft (no funcionó para mí, supongo que no admite la resolución de alias TNS desde OID/LDAP)

     var connectString = "Driver={Easysoft ODBC-Oracle Driver};Database=orcl1;Uid=scott;Pwd=secret;Server=orcl1;SID=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • ODBC con el controlador Oracle WP de Easysoft (no funcionó para mí, supongo que no admite la resolución de alias TNS desde OID/LDAP)

     var connectString = "Driver={Easysoft ODBC-Oracle WP Driver};Database=orcl1;Uid=scott;Pwd=secret;Server=orcl1;SID=orcl1";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • Proveedor ADO.NET para Oracle OCI de CData

     var connectString = "Data Source=orcl1;User=scott;Password=secret";
     var con = new System.Data.CData.OracleOci.OracleOciConnection(connectString);
     con.Open();
    
  • ODBC con controlador para Oracle OCI de CData

     var connectString = "Driver={CData ODBC Driver for Oracle OCI};Data Source=orcl1;User=scott;Password=secret";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    
  • ODBC con controlador Oracle con conector SQL de Magnitude (anteriormente Simba)

     var connectString = "Driver={Simba Oracle ODBC Driver};TNS=orcl1;UID=scott;PWD=secret";
     var con = new System.Data.Odbc.OdbcConnection(connectString);
     con.Open();
    

En general todos están funcionando. Para una nueva aplicación, debe utilizar ODP.NET o el controlador administrado ODP.NET . El controlador administrado ODP.NET es bastante nuevo y todavía tiene algunas limitaciones y también los errores "más recientes".

Los proveedores externos pueden tener costos adicionales.

Además del controlador administrado ODP.NET , Progress y el controlador ODBC-Oracle WP de Easysoft, todos los controladores/proveedores deben tener instalado un cliente Oracle (instantáneo).

Desarrollé una aplicación en github que ejecuta todas estas 32 variantes (17 de 64 bits + 15 de 32 bits) a la vez.

Wernfried Domscheit avatar Jan 15 '2016 07:01 Wernfried Domscheit