【发布时间】:2012-09-25 14:16:30
【问题描述】:
是否可以跨应用程序重用 ColdFusion ORM 对象?
例如,我在名为 app1 的文件夹中设置了一个名为 app1 的启用 ORM 的应用程序。我创建了一个与部门数据库表对应的部门.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 的文件夹中设置了一个相同的启用 ORM 的应用程序 app2。我在那里创建了一个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,同时使用相同的数据源/实体映射等。
-
我正在尝试实例化同一个 CFC,因为我认为拥有多个具有相同代码的 CFC 是多余的。我喜欢你关于 ORM 库应用程序的想法——我会尝试一下。
标签: orm coldfusion coldfusion-9