如何为 ORM 设置动态数据源?

发布于 2024-11-16 19:36:53 字数 534 浏览 7 评论 0原文

Coldfusion application.cfc 中的 ORM 设置在其他任何内容运行(onapplicationstart 等)之前运行。那么如何在 application.cfc 中设置动态数据源(ORM init 之前的代码)?我们可以在之后设置它,并将 ORM 重新指向动态数据源,但这要求硬编码数据源也必须有效。这充其量是脆弱的。

下面是一个示例:

<cfscript>
this.name = "someapp_#hash(cgi.http_host)#";
this.ormenabled = "true";
this.ormsettings = { cfclocation = "config/definitions", eventhandling = "true",datasource="STATICDATASOURCE" };
</cfscript>

如果未在 application.cfc 范围中指定,则会出现“未为当前应用程序配置 ORM”之类的错误。

我们需要能够从服务器上的文本文件获取数据源。

ORM settings in Coldfusion application.cfc run before anything else runs (onapplicationstart, etc). So how do you set a dynamic datasource (code before the ORM init) in application.cfc? we can set it after and it re-points the ORM to a dynamic datasource, but that requires that the hardcoded datasource must be valid as well. This is tenuous at best.

Here is an example:

<cfscript>
this.name = "someapp_#hash(cgi.http_host)#";
this.ormenabled = "true";
this.ormsettings = { cfclocation = "config/definitions", eventhandling = "true",datasource="STATICDATASOURCE" };
</cfscript>

If it's not specified in application.cfc scope then you get errors like "ORM is not configured for the current application."

We need to be able to get the datasource from a text file on the server.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海的爱人是光 2024-11-23 19:36:53
this.datasource="YourDatasourceName";

好吧,如果您想存储一个文件,在本例中我们将其称为“datasource.xml”,其中包括:

<dataSourceName>Name goes here</dataSourceName>

您可以使用以下命令读取它:

dataFile = fileRead("pathToFile/datasource.xml");
data = xmlParse(dataFile);
dataSourceName = data.dataSourceName.xmlText;

this.datasource=dataSourceName;
this.datasource="YourDatasourceName";

Well, if you wanted to store a file, for this example we'll call it "datasource.xml" consisting of:

<dataSourceName>Name goes here</dataSourceName>

You can read it in with:

dataFile = fileRead("pathToFile/datasource.xml");
data = xmlParse(dataFile);
dataSourceName = data.dataSourceName.xmlText;

this.datasource=dataSourceName;
善良天后 2024-11-23 19:36:53

如果未定义,ORM 数据源仅使用默认数据源。

话虽如此,如果您想动态添加/删除数据源,请参阅管理员 API:http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea77859461172e0811cbf364104-7fcf.html(自 CF8 起可用)

我不确定您是否可以重新设置this.ormsettings.datasource 在运行时更改为其他内容(即onApplicationStart()?或onServerStart()?),但许多设置可以再次设置。您可能想尝试一下。

ORM datasource just uses the default datasource if not defined.

Having said that, if you want to add / remove datasource dynamically, see Administrator API at: http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea77859461172e0811cbf364104-7fcf.html (available since CF8)

I'm not sure if you can re-set the this.ormsettings.datasource to something else at runtime (i.e. onApplicationStart()? or onServerStart()?), but many of the settings can be set again. You may want to try it out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文