Как мне ссылаться на вторую БД из файла приложения cf c - PullRequest
2 голосов
/ 10 апреля 2020

В нашем приложении Portal.cf c мы определяем (настраиваем) наши DSN-соединения следующим образом:

<cfset this.datasource = "DSN1"> (Main DB) <cfset this.datasource_1 = "DSN2"> (2nd DB) <cfset this.datasource_2 = "DNS3"> (3rd DB)

Это в тегах. Затем я также перешел к функции «OnApplicationStart» и не могу заставить ее работать правильно.

Этот application.cf c, если на него ссылаются в основном приложении, к которому другие приложения имеют доступ (App2 и т. Д.) …) Мой вопрос таков;

Как мне сослаться на другие источники данных (this.datasource_2) в запросе для приложения App2?

<cfquery name="queryname" datasource="**[What goes here]**"> For second datasource

На DSN this.datasource всегда ссылаются, поскольку в списке нет источника данных в тегах cfquery.

Любая помощь, которую вы можете предоставить, или ссылки на мой способ, будут оценены. Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 10 апреля 2020

Попробуйте просмотреть дополнительные переменные приложения

<cfset application.datasource_1 = "DSN2">  (2nd DB)
<cfset application.datasource_2 = "DNS3"> (3rd DB)
0 голосов
/ 12 апреля 2020

или вы можете использовать Applicaton.cf c this.datasources struct

0 голосов
/ 11 апреля 2020

Мое решение состоит в том, чтобы вообще не использовать никаких переменных и просто жестко кодировать имена источников данных. Другими словами, для этого:

<cfquery name="queryname" datasource="**[What goes here]**"> For second datasource

Ответ: "DSN2".

Чтобы эти источники данных могли быть использованы, они должны быть определены на сервере, и вы должны знать их имена. Если вы присваиваете их какой-то глобальной переменной, вам нужно знать имя этой переменной. Я не вижу смысла в использовании глобальных переменных в этой ситуации.

Для DSN1 есть плюсы и минусы в использовании глобальной переменной. Преимущество переменной в том, что вам не нужен атрибут источника данных для запросов, которые используют эту базу данных. Недостатком является то, что ваш код становится немного менее согласованным, если некоторые запросы имеют атрибут источника данных, а другие нет. Этот топи c лучше всего обсуждать лично, когда пьешь пиво.

...