2011-11-18 11 views
6

Làm cách nào để cấu hình ORF của ColdFusion 9 để sử dụng nhiều DSN nếu có thể?Làm thế nào để cấu hình ORF Coldfusion cho nhiều DSNs phạm vi phiên?

Có thể thiết lập nguồn dữ liệu trong ngữ cảnh của phạm vi phiên thay vì phạm vi ứng dụng không?

Hoặc làm thế nào, trong CF9, bạn có định cấu hình Hibernate để sử dụng nhiều DSN không?


Hình như tôi nên cụ thể hơn ... Tôi đang tìm kiếm một giải pháp cho phép xác định một DSN dựa trên phiên.

Đây là kịch bản. Chúng tôi có một ứng dụng được xây dựng tùy chỉnh duy nhất sử dụng nhiều DSN được xác định từ tên miền phụ. Vì vậy, ai đó truy cập từ http://abc.domain.com sẽ sử dụng DSN abc trong trường hợp ai đó truy cập vào xyz.domain.com sẽ sử dụng xyz DSN. Tên của DSN được xác định khi phiên được tạo và nó được lưu trữ dưới dạng biến phiên.

Tôi muốn làm điều gì đó như thế này:

//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 = {}; 
} 

Trả lời

1

Mặc dù nó có thể cấu hình ColdFusion 9 để sử dụng nhiều nguồn dữ liệu với ORM trong phạm vi ứng dụng, nó không phải là có thể cấu hình ORM ColdFusion 9 để làm việc với nhiều DSN trong vòng phạm vi phiên.

+0

Vì vậy, bạn có phải giữ 'datasource =" xyz "' hardcoded (xyz) trong 'Artists.cfc' của bạn không? Hoặc tìm cách để làm cho nó năng động? – Sergii

+0

@Sergii Tôi đã không làm việc nhiều với CF ORM vì giới hạn của chúng trên nhiều nguồn dữ liệu. Theo tôi hy vọng nó không đúng, tôi tin câu trả lời là nguồn dữ liệu phải được mã hóa cứng. Hy vọng rằng ai đó sẽ sửa tôi nếu tôi sai. Tôi coi việc viết mã cứng là thực hành lập trình kém, vì vậy tôi thực sự hy vọng mình sai. – Micah

1

Giới thiệu với bản cập nhật 9.0.1 ColdFusion , bạn có thể sử dụng multiple data sources with ORM. Mỗi lần một thành phần. Sử dụng thuộc tính "datasource" trong đối tượng của bạn, để xác định cơ sở dữ liệu nào nên được sử dụng.

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

    ... 
</cfcomponent> 

hoặc

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

Không thể xác định mặc định ở cấp Application.cfc, có nghĩa là bạn chỉ cần thêm thuộc tính nguồn dữ liệu nếu bạn đang tham chiếu dữ liệu từ một nơi khác? –

+0

Nếu bạn bỏ qua thuộc tính nguồn dữ liệu trong đối tượng/thành phần, thì nguồn dữ liệu mặc định được xác định trong application.cfc sẽ được sử dụng –

+0

Bạn đặt nguồn dữ liệu cấp Application.cfc thành gì? – Micah