我可以使用NON-RAW CFQL按CreationTimeUTC排序吗?

时间:2016-11-17 19:40:48

标签: codefluent

我无法按CreationTimeUTC排序。我知道可以使用RAW CFQL查询来完成,但有没有办法使用普通的CFQL。我试过的步骤如下:

  1. Made CreationTimeUtc在实体中显示为一个属性,如下所示(很抱歉将它放在代码片段中,stackoverflow有时候是古怪的XML,这是让它显示的唯一方法)
  2. <cf:property name="CreationTimeUtc" set="false" persistent="false" readOnLoad="true" typeName="datetime" dbType="DateTime" dataMember="false" persistenceName="_trackCreationTime" />

    1. 创建了CFQL查询,如下所示(抱歉使用blockquote,stackoverflow再次古怪,并且在代码块中无法正确格式化):
    2.   

      LOADONE(Amikids.TimeTracking.PunchCard punchCard)WHERE IsVoid = FALSE   订单BY CreationTimeUtc DESC

      1. 在构建模型时,我收到以下错误:
      2.   

        错误52 CF0291:尝试按列创建持久性顺序   已在程序中检测到代码段“CreationTimeUtc”   'CompanyCodeAdjustment_LoadActiveByPunchCard'。确保订购   正文中声明的列标识符在上下文中有效。如果   你真的想要创建一个片段,你应该改变项目,   方法或视图'checkLevel'属性,当前设置为'Default'。

        以下是该实体的完整XML。

          <cf:entity name="CompanyCodeAdjustment" namespace="Amikids.TimeTracking" categoryPath="/Amikids.TimeTracking" persistenceName="CompanyCodeAdjustment">
            <cf:property name="Id" key="true" />
            <cf:property name="PunchCard" typeName="{0}.PunchCard" relationPropertyName="CompanyCodeAdjustments" />
            <cf:property name="PunchCardAdjustmentStatus" typeName="{0}.PunchCardAdjustmentStatus" />
            <cf:property name="NewValue" />
            <cf:property name="CreationUser" set="false" persistent="false" readOnLoad="true" dataMember="false" persistenceName="_trackCreationUser" />
            <cf:property name="CreationTimeUtc" set="false" persistent="false" readOnLoad="true" typeName="datetime" dbType="DateTime" dataMember="false" persistenceName="_trackCreationTime" />
            <cf:property name="Reason" />
            <cf:property name="ReviewedBy" />
            <cf:property name="IsVoid" typeName="bool" />
            <cf:property name="CompanyName" />
            <cf:method name="LoadActiveByPunchCard" body="LOADONE(Amikids.TimeTracking.PunchCard punchCard) WHERE IsVoid = FALSE ORDER BY CreationTimeUtc DESC" />
          </cf:entity>
        

1 个答案:

答案 0 :(得分:0)

CodeFluent查询语言(CFQL)提供了一种特殊语法来访问特殊列,例如创建时间列:$column.creationtime。但是,这在ORDER BY语句中不可用,因此您必须使用内联SQL [$Customer{TrackCreationTimeColumn.FullName}$]

LOAD(datetime now) 
WHERE $column.creationtime &lt; @now 
ORDER BY [$Customer{TrackCreationTimeColumn.FullName}$]

<cf:entity name="Customer" namespace="Model1">
  <cf:property name="Id" key="true" />
  <cf:method name="LoadOrderedByCreationDate" body="LOAD(datetime now) WHERE $column.creationtime &lt; @now ORDER BY [$Customer{TrackCreationTimeColumn.FullName}$]" checkLevel="None" />
</cf:entity>