2016-04-25 127 views
1

我有兩個與典型的主/明細關係相關的CodeFluentEntities集合:發票和發票詳細信息。CodeFluent相關集合排序

雖然我可以通過發票號碼順序加載發票集合,但我無法弄清楚如何獲取發票詳細信息的相關集合,以便按發票的行號加載。

這個作品在檢索所需的順序發票的:

Dim _page As New CodeFluent.Runtime.PageOptions("[Invoice].[InvoiceNumber]", System.ComponentModel.ListSortDirection.Ascending) 
Dim _orders as Accounting.AR.OrderCollection.PageLoadAll(0, -1, _page) 
OrderCollectionBindingSource.DataSource = _orders 

InvoiceDetail集合以隨機順序加載。我想這樣做的是有由[InvoiceDetail].[LineNumber]

回答

0

CodeFluent實體排序的相關集合提供了多種選擇來處理集合排序:

  • 靜態排序:集合使用CFQL方法SQL排序。如果需要,也可以覆蓋LoadBy ...()方法。但是,最好創建一個名爲LoadBy ... OrderedBySomething()的CFQL方法。
  • 動態排序:集合根據排序參數在SQL中排序。
  • 客戶端排序:使用可根據需要重寫的排序方法。

所有這些選項都記錄在這裏:http://www.softfluent.com/documentation/?BOM_SP_Sorting.html

在你的情況,你想改變使用的Orders財產加載訂單的相關集合的方法。所以你需要用靜態排序來創建一個新的CFQL方法(或者替換現有的方法)。然後,你可以設置這個方法爲一個使用loadMethodName屬性的使用方法:

<cf:entity name="Customer"> 
    <cf:property name="Id" key="true" /> 
    <cf:property name="FullName" /> 

    <!-- loadMethodName --> 
    <cf:property name="Orders" loadMethodName="LoadByCustomerOrderedByCreationDate" typeName="{0}.OrderCollection" relationPropertyName="Customer" /> 
</cf:entity> 

<cf:entity name="Order"> 
    <cf:property name="Id" key="true" /> 
    <cf:property name="CreationDate" sortable="true" typeName="date" /> 
    <cf:property name="Customer" typeName="{0}.Customer" relationPropertyName="Orders" /> 

    <!-- Static sorting: `ORDER BY ...` --> 
    <cf:method name="LoadByCustomerOrderedByCreationDate" body="LOAD(Customer) WHERE Customer = @Customer ORDER BY CreationDate" /> 
</cf:entity> 

Orders屬性是:

public OrderCollection Orders 
{ 
    get 
    { 
     if (this._orders == null) 
     { 
      // code omitted for brevity 
      this._orders = OrderCollection.LoadByCustomerOrderedByCreationDate(this); 
     } 
     return this._orders; 
    } 
} 
+0

感謝您的幫助。 –

+0

有幾個問題。如果我使用您建議的模型,數據庫中客戶和訂單之間的鏈接就會中斷。如果我使用CustomerCollection.LoadAll,則僅返回Customer行,而在.LoadAll返回包含作爲返回Customer的一部分的每個Customer的OrderCollection的分層集合之前。 –

+0

我正在嘗試獲取所有客戶及其訂單的分層集合,其中客戶集合按客戶編號排序,相關訂單按訂單編號排序 –