Connettere C # a Oracle

Qual è la migliore libreria / driver per connettere l’applicazione C # (.NET) a Oracle 10g e 11g.
Le opzioni correnti che ho trovato sono:

  1. Client Oracle fornito con l’installazione del database
  2. Oracle Instant Client (che è un po ‘confuso dal momento che ha 6-8 versioni per numero di sistemi operativi)
  3. Microsoft ODBC? (Può essere usato?)
  4. ODP.Net – questo prodotto separato o è incluso in 1. e 2.?

Qualcuno può spiegare le differenze?

Sto pianificando un’applicazione C # che eseguirà operazioni CRUD di base sul database Oracle. Quale libreria / driver è la più piccola e facile da installare?

Modificare:
Raccomandazione generale è usare ODP.Net. Ora, qualcuno può spiegare o indicare delle differenze tra i pacchetti di installazione dei client. Ho trovato 3 diversi client per Oracle 11g:

  • Client Oracle – pacchetto driver client fornito come parte dell’installazione del database
  • ODAC – Componenti di accesso ai dati Oracle , contiene molte cose, tra cui ODP.Net e Oracle Instant Client
  • Oracle Instant Client che contiene anche molte cose, tra cui ODP.Net

Quindi, quale di questi è sufficiente per lo sviluppo? La documentazione Oracle è dolorosamente dettagliata, ma non dice nulla sulle differenze tra questi pacchetti client. Vorrei andare con il più piccolo (Instant Client). È la scelta migliore?

Modifica 2:
Sto usando .Net 3.5

Per colbind C # a Oracle è necessario un fornitore di dati per .net. Questo può essere uno dei seguenti:

  • ODP.Net (Oracle)
  • System.Data.OracleClient (Microsoft)
  • ODBC (Oracle)
  • OLEDB (Oracle)
  • DataDirect ADO.NET Data Provider per Oracle (DataDirect)
  • potrebbe essere un altro fornitore

Tutti questi fornitori di dati necessitano di un client Oracle installato. Non esiste una libreria standalone come jdbc14.jar come in java. Hai 2 scelte per la distribuzione di un client Oracle:

  • client completo (può essere dall’installazione del database)
  • client istantaneo

ODP.Net, ODBC, OLEDB fanno parte del client completo. Questo è il modo “difficile” perché un processo di installazione deve essere eseguito su ogni client che esegue il software. Qui è dove vengono messi più megabytes sul client.
Il client istantaneo è fornito in diversi pacchetti. Questo è il modo più piccolo per la distribuzione di un client Oracle.

Suggerirei di utilizzare ODP.Net con Oracle Instant Client , perché questo è facile da implementare e molto leggero.

Di quali pacchetti client istantanei hai bisogno:

  • Scegli la versione 11.1.0.6.0 (o più recente in cui è fornito ODAC)
  • Pacchetto client istantaneo – Di base (se è necessario il supporto completo della lingua)
  • Pacchetto client istantaneo – ODAC

Ci sono molti articoli su StackOverflow sulla distribuzione di Oracle Instant Client con applicazioni C #.

EDIT: collegamenti e versioni aggiornati

Microsoft deprecerà lo spazio System.Client.OracleClient nomi System.Client.OracleClient quindi penso che sia meglio usare ODP.NET . Assicurati di scaricare l’ultimo (ODP.NET 11g) poiché le versioni precedenti avevano alcuni problemi.

ODP.NET è il miglior fornitore per l’accesso a Oracle db, soprattutto perché è il più nativo, che lo differenzia da ODBC come segue:

  • prestazioni migliori
  • ODP.NET fornisce accesso a funzionalità Oracle avanzate, non disponibili tramite ODBC .NET
  • ODP.NET non utilizza un bridge di accesso ai dati aggiuntivo.

ODBC può anche essere usato, ma come detto sopra sarà più lento e avrà funzionalità limitate.

Per fare funzionare ODP.NET è necessario il software elencato qui (e incluso il client oracle): http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install

Spero che questo ti aiuti!

Forse ho torto ma ADO.NET ha integrato il supporto per Oracle. forse per le versioni precedenti …

Penso che odbc sia troppo lento. System.Data.OracleClient è anche un po ‘lento e sarà deprecato da Microsoft.

Potresti usare il provider di devart, c’è una versione gratuita. È facile da implementare. Vedi qui http://www.devart.com/dotconnect/oracle/ Supporta il framework di entity framework.

Odp.net è veloce ma non supporta il framework delle quadro e non è molto semplice da implementare.

Non posso davvero dire le differenze tra le soluzioni fornite, ma ho sempre utilizzato Oracle Data Access Components da Oracle e ha sempre funzionato in modo impeccabile. Potrebbe essere trovato qui: ODAC per Visual Studio

Ciò che è sicuro è che una libreria sviluppata da Oracle su .NET Framework sarà molto più accurata di una libreria sviluppata da un’azienda esterna a Oracle. Ad esempio, riguardo alle eccezioni generate durante l’accesso a un database Oracle, saranno molto più utili se la libreria è stata sviluppata dal team di sviluppo di Oracle in quanto hanno conoscenze aggiuntive sui DB Oracle.

La cosa brutta è che avrai una dipendenza, problema che non dovrai superare se scegli di utilizzare .NET System.Data.OracleClient.

Spero che questo ti aiuti. Saluti.


EDIT: il pacchetto ODAC contiene ODP e Oracle Developer Tools

ODP.NET è un fornitore nativo per l’accesso a Oracle db. E quindi dovrebbe essere meglio ottimizzato per Oracle db. Inoltre, ci sono funzionalità oracle, come REF CURSOR type, che non sono supportate da MS ODBC, ma supportate da ODP.NET. È ansible scaricare ODAC, che include anche ODP.NET, sul sito Web http://www.aracle.com.