我有两个与典型主/明细关系相关的CodeFluentEntities集合:发票和发票详细信息。
虽然我可以按发票号码按顺序加载发票收款,但我无法弄清楚如何通过发票按顺序加载相关的发票明细集合行号。
这适用于按所需顺序检索发票:
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 :(得分:1)
CodeFluent实体提供了几种处理集合排序的选项:
所有这些选项都记录在此处: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;
}
}