2011-11-18 8 views
6

Come si configura ORM ColdFusion 9 di utilizzare più DSN, se possibile?Come configurare ORM di ColdFusion per più DSN di ambito sessione?

Is è possibile impostare l'origine dati nel contesto di un ambito della sessione anziché l'ambito di applicazione?

o come, nel CF9, si configura Hibernate utilizzare più DSN?


Sembra che dovrei essere più preciso ... Sto cercando una soluzione che permette di specificare un DSN basata sulla sessione.

Ecco lo scenario. Abbiamo una singola applicazione personalizzata che utilizza più DSN determinati dal sottodominio. Quindi, chiunque acceda da http://abc.domain.com userebbe il DSC abc dove come qualcuno che visita xyz.domain.com userebbe il DSN xyz. Il nome del DSN viene determinato al momento della creazione della sessione e memorizzato come variabile di sessione.

mi piacerebbe fare qualcosa di simile:

//Artists.cfc

component persistent="true" datasource="#session.dsn#" 
{ 
property name="artistid" generator="increment"; 
property firstname; 
property lastname; 
property address; 
property city; 
property state; 
} 

// Application.cfc

component output="false" { 
THIS.name = "MultipleDsnORMTest"; 
THIS.applicationTimeout = createTimeSpan(0, 0, 0, 0); 
THIS.clientManagement = false; 
THIS.datasource = ""; // Leaving black ==> "No data source specified." 
         // Setting to cfbookclub ==> "ORM is not 
         // configured for the current application." 
         // Setting to cfartgallery works but doesn't 
         // demonstrate use multiple DSNs 
THIS.loginStorage = "cookie"; 
THIS.sessionManagement = true; 
THIS.sessionTimeout = createTimeSpan(0, 0, 0, 0); 

THIS.ormenabled = true; 
THIS.ormsettings = {}; 
} 

risposta

1

Anche se è possibile configurare ColdFusion 9 per utilizzare più fonti di dati con ORM nel perimetro di applicazione, non è possibile configurare ORM ColdFusion 9 di lavorare con più DSN all'interno l'ambito della sessione.

+0

Quindi, dovevi mantenere 'datasource =" xyz "' hardcoded (xyz) nel tuo 'Artists.cfc'? O trovato un modo per renderlo dinamico? – Sergii

+0

@Sergii Non ho lavorato molto con i CF ORM a causa delle loro limitazioni su più origini dati. Per quanto spero che non sia vero, credo che la risposta sia che l'origine dei dati deve essere hard-coded. Spero che qualcuno mi corregga se sbaglio. Ho considerato hard-coding come quello di cattive pratiche di programmazione, quindi spero davvero di sbagliarmi. – Micah

1

introdotte con l'aggiornamento 9.0.1 ColdFusion , puoi usare multiple data sources with ORM. Uno alla volta per componente. Utilizzare l'attributo "origine dati" nel proprio oggetto per specificare quale database deve essere utilizzato.

<cfcomponent displayname="firstObject" datasource="dbOne"> 
    <cffunction> 
     ... 
    </cffunction> 

    ... 
</cfcomponent> 

o

component datasource = 'dbOne'{ 
    ... 
} 
+0

non è stato possibile definire un difetto a livello Application.cfc, il che significa che avrete solo bisogno di aggiungere l'attributo origine dati se si sta riferimento ai dati da qualche altra parte? –

+0

Se si omette l'attributo origine dati nell'oggetto/component, quindi l'origine dati di default definito nel Application.cfc verrà utilizzato –

+0

Cosa impostare il livello di origine dati Application.cfc a? – Micah

Problemi correlati