1

在缓存中,我有一个“授权”类型的实体。

然后我运行以下代码来获取 MandateHistory 实体的集合,然后通过轻风将其合并到 Mandate 实体的相应属性:

 function getMandatHistory(mandatId) {
            var query = breeze.EntityQuery.from("MandatesHistory")
                .where("Mandate.Id", "==", mandatId).orderBy("Id")
                .expand("Mandate").skip(offset).take(pageSize).inlineCount(true);

            return manager.executeQuery(query.using(service));
 }

请注意 orderBy 子句受到尊重,结果按 Id 正确排序。

但是,未对 Mandate 实体的集合属性中的项目进行排序。我必须在这里做一些特别的事情吗?

4

1 回答 1

1

对集合导航属性返回的值进行排序不是 Breeze 所做的。它将对查询的结果进行排序,但如果您想对实体的集合属性之一进行排序(并保持排序),您将需要自己管理它。

我认为你最好的两个选择是。

1)先排序再显示。即在显示之前对任何集合调用排序方法。根据您使用的 MVVM 框架,通常有一个“绑定”可以做到这一点。

2) 订阅导航属性返回的数组上的 Breeze arrayChanged 事件,并在看到更改事件时调用数组上的排序。请注意,如果您订阅了很多实体的很多属性,这可能会变得很昂贵。

于 2013-06-11T17:28:47.893 回答