gpt4 book ai didi

orm - 跨应用程序重用 ColdFusion ORM 实体/对象?

转载 作者:行者123 更新时间:2023-12-02 03:56:01 25 4
gpt4 key购买 nike

是否可以跨应用程序重用 ColdFusion ORM 对象?

例如,我在名为 app1 的文件夹中设置了一个名为 app1 的支持 ORM 的应用程序。我创建了一个 department.cfc 对应于部门数据库表:

<cfcomponent>
<cfset this.name = "app1">
<cfset this.ormenabled = "true">
<cfset this.ormSettings = {
datasource = "myDS",
schema = "mySchema",
dialect = "Oracle10g",
logSQL = "false"
}>

我可以加载和转储 CFM 文件中的内容:

<cfset item = EntityLoad("department")>
<cfdump var="#item#">

然后我在名为 app2 的文件夹中设置了一个名为 app2 的完全相同的支持 ORM 的应用程序。我在那里创建了一个 department.cfc,它扩展了 app1 中的 department.cfc:

<cfcomponent persistent="true" extends="my.path.app1.department">
</cfcomponent>

当我尝试加载和转储内容时,出现错误:

系统已尝试使用未定义的值,这通常表示您的代码或某些系统代码中存在编程错误。空指针是未定义值的另一个名称。

我已经验证路径是正确的。例如。我能够使用 CreateObject 实例化对象:

<cfset item = CreateObject("component","my.path.app1.department")>
<cfdump var = "#item#">

我希望我可以引用单个 CFC 并重新使用该对象,但除非我遗漏了什么,否则看起来可能有必要在 app2 中重新创建该对象。

最佳答案

CFC(实体)可以在两个不同的应用程序中实例化,每个应用程序都使用自己的 ORM。您需要做的就是将它们放在服务器上的这个中央位置,并可能创建一个应用程序特定/全局文件映射,然后您可以创建新实例。然而,最方便的方法是通过 application.cfc 中的“this.ormSettings”变量,因为您可以在一个地方完成所有操作。

例如:

    component displayname="Application"
{
this.ormSettings = {
cfclocation = [
"/full/path/to/cfc/directory",
"Entity",
"/a/relative/path"
]
};

this.mappings["/Entity"] = "full/dir/path/to/another/cfc/directory/called/whatever";

}

这些位置中的每一个都将在搜索任何其他目录之前搜索匹配的 CFC,因此通过显式定义它们也有潜在的性能优势。

关于orm - 跨应用程序重用 ColdFusion ORM 实体/对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com