为每个组件启用Coldfusion ORM

时间:2012-09-05 11:44:10

标签: orm coldfusion components cfc

我已经开始在Coldfusion 9中使用ORM,但是我遇到了一个问题,我将CFC设置为persistant=true,这样当我运行myCFC.init()默认值时已分配属性的值 - 但我不想将此CFC与ORM一起使用。

问题是Coldfusion会抛出错误“mycFC为cfc myCFC定义的表不存在。”

有没有办法让我的应用程序忽略某些CFC?或者只关注persistant=true

以外的特定CFC

或者,我可以在不使组件持久化的情况下使我的默认属性值生效

2 个答案:

答案 0 :(得分:1)

  

或者,我是否可以在不使组件持久的情况下使我的默认属性值生效?

是的,只需在 init()方法中设置它们。

<cfcomponent name="person" persistent="false" output="false">

 <cfproperty name="gender"><!--- Non-persistent CFC: you can't set a default here --->

 <cffunction name="init" output="false>
  <cfset variables.gender = "m"><!--- Set the default here --->
 </cffunction>

</cfcomponent>

您还需要在持久性CFC中为任何复杂或动态值默认值(例如数组或当前日期)执行此操作,因为您只能在属性声明中设置简单的默认值(例如文字字符串或整数)

<cfcomponent name="person" persistent="true" table="persons" output="false">

 <cfproperty name="gender" default="m"><!---Persistent CFC, so this simple default will be set --->
 <cfproperty name="dateCreated"><!---You can't set a default dynamic date value --->

 <cffunction name="init" output="false>
  <cfset variables.dateCreated= Now()><!--- Set the current datetime here --->
 </cffunction>

</cfcomponent>

答案 1 :(得分:0)

您在开场和第一场之间放置的任何代码都将被执行。我假设您使用CFproperty标签来设置默认值。相反,使用此结构:

<cfcomponent name="aCFC">

    <!---
    || Psuedo Constructor code: this code runs when the object is created.
    ||--->

    <cfset defaultVar_1 = "default value">
    ...etc

    <cffunction name="firstFunction">
        ...
    </cffunction>
</cfcomponent>