我有两个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 = _ordersInvoiceDetail集合按随机顺序加载。我想要做的是让相关的集合按[InvoiceDetail].[LineNumber]排序
发布于 2016-04-26 08:22:44
CodeFluent实体提供了几个处理集合排序的选项:
所有这些选项都记录在这里: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;
}
}https://stackoverflow.com/questions/36852595
复制相似问题