Passa ai contenuti principali

Oracle e .Net installazione nella stessa macchina di OracleXe e ODAC per .Net


Installare Oracle xe nel proprio pc è un utile sistema per sviluppare le proprie applicazioni che si devono connettere ad oracle.
Ricordarsi i file di configurazione, in particolare il tnsnames.ora sono nella famigerata cartella (a) ...oraclexe\app\oracle\product\11.2.0\server\network\ADMIN.

l'entry di oracle di default si chiama XE e con questo alias ci si può connettere, per esempio, usando il programma desktop OracleSqlDeveloper. Ma anche in .Net tramite il deprecato (ma funzionante anche nel FW 4.0) System.Data.OraclaClient.

Probabilmente si vuole installare sulla stessa macchina gli ODAC (ODAC sono tutto quanto oracle produca per la connettività .Net compreso i tool per visual studio e il supporto ad Entity Framework).

Nella cartella scelta per l'installazione sarà replicata al medesima struttura. Nel mio caso (b): ...odpinstall\product\11.2.0\client_1\Network\Admin .
Probabilmente ora tutte le connessioni da .Net non funzionaranno più: con l'installazione è stata creata una nuova ORA-HOME: in questa cartella andrà copiato il file tnsnames.ora già presente in (a).

La cosa curiosa è che OracleSqlDeveloper continuerà ad usare il tnsnames.ora indicato in (a) mentre le connessioni fatte tramite odp.Net (per esempio il wizard di creazione del modello .edmx) useranno quanto configurato in (b)

Commenti

Post popolari in questo blog

Log.Net: Conflitto Con CrystalReport per Visual Studio 2010

Situazione: Web Application Asp.Net 4.0, Utilizzo delle librerie di Crystal Report per VS2010. Il progetto web utilizza Log.Net, scaricato dal sito ufficiale. Un problema simile si verifica con applicazioni Windows Form. Problema: Le due librerie vanno in conflitto sia in fase di compilazione ( 1550854 - "Could not load file or assembly 'log4net' or one of its dependencies" Error when building Visual Studio 2010 solution utilizing the Crystal Reports .NET Runtime ), sia una volta installata sulla macchiana target (L'inizializzatore di tipo di 'CrystalDecisions.Shared.SharedUtils' ha generato un'eccezione. Impossibile caricare il file o l'assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' o una delle relative dipendenze. La definizione di manifesto dell'assembly specificato non corrisponde al riferimento all'assembly.). Soluzione Spiegata: Il thread in cui ne parlano. A quanto ho ca...

Entity Framework: SqlException Line 7: Incorrect syntax near '('

La stringa SQL generata per il comando linq2Entity First funziona correttamente con SQL server 2008. L'sql generato è SELECT TOP(1) ... Per potersi collegare ad un DB SqlServer2005 serve modificare nei metadati la proprietà ProviderManifestToken ="2005". Emerge a questo punto l'errore che da il titolo al post: ogni chiamata a FirstOrDefault o First esplode riportando il messaggio sibillino. L'inghippo è proprio l'SQL generato: TOP (1) sembra indigesto a sql server 2005. La soluzione: usare come livello di compatibilità 2000 per la proprietà ProviderManifestToken. La query generata è Top 1... , senza parentesi, e funziona su SqlServer2005 Q uesto post nei forum microsof illustra un problema simile e la soluzione.

Threading with .Net Compact Framework

Nella serie degli "How do I? videos" di Microsoft alcuni video di ripasso sulle basi della programmazione multithread in .Net con un occhio all'aspetto mobile. How Do I: Use the ThreadPool to Execute Worker Threads? ThreadPool. nulla da segnalare. How Do I: Use a Monitor Object for Thread Synchronization? L'oggeto Monitor per creare delle zone critiche ad accesso esclusivo nel codice. Il consiglio è quello di usere le funzioni Enter ed Exit dell'oggetto Monitor in zone vicine del codice e nella stessa funzione. A parer mio tanto vale usare la sintassi lock(syncObj) { ...sezione critica... } How Do I: Synchronize Multiple Threads? Uso di AutoresetEvent e dei suoi metodi Set (consente ad un solo thread di passare il semaforo) e WaitOne (resto in attesa di fronte al semaforo). La sincronizzazione in questione è tra il thread dell'UI che comanda tramite pressione di un pulsate il Set e un secondo thread separato che cicla indefinitamente e ad ogni ciclo si arresta...