Breeze / OData:两个属性的 orderBy "max"
Breeze / OData: orderBy "max" of two properties
我不确定这是轻而易举还是 OData 问题:我想使用 orderBy
但使用两个属性的 max。
因此,例如,如果动物没有指定高度或高度小于动物类型的最小高度,则以下列表将错误地排序:
breeze.EntityQuery.from("Animal").orderBy("height, toAnimalType.minimalHeight", true);
我正在考虑以下范围内的内容:
breeze.EntityQuery.from("Animal").orderBy("max(height, toAnimalType.minimalHeight)", true);
我查看了 OData functions under chapter 4.5,但我认为这是错误的方式,因为 A) 没有 min
/max
和 B) 这些是 $filter
-函数(不是 orderBy 函数)
我会首先考虑在提取数据时将计算列添加到数据中,这样您就可以将该列用于 orderBy。故障排除也更加清晰。
参考约翰爸爸的模型工厂:
(function() {
'use strict';
var serviceId = 'model';
angular.module('app').factory(serviceId, model);
function model() {
// revealing module pattern
var entityNames = {
client: 'Client',
order: 'Order'
... other entity names
};
var service = {
configureMetadataStore: configureMetadataStore,
entityNames: entityNames
};
return service;
function configureMetadataStore(metadataStore) {
registerClient(metadataStore);
};
//#region Internal Methods
function registerClient(metadatastore) {
metadatastore.registerEntityTypeCtor('Client', client);
function client() {
// add calculated 'display' property to client model
// here is where you'd decide min or max
Object.defineProperty(client.prototype, 'display', {
get: function() {
var cn = this.companyName;
var st = this.state;
return cn.padRight('.',60) + st;
}
});
}
已经有几年没有使用它了,因为我现在使用所有 ng4 和 Typescript,所以它可能有点粗糙,但可能会给你一个想法。推荐所有这些东西的 Pluralsight 课程。看看您是否可以在 github 上找到 Angular 的 John Papa's Hot Towel Spa 的示例代码。
我不确定这是轻而易举还是 OData 问题:我想使用 orderBy
但使用两个属性的 max。
因此,例如,如果动物没有指定高度或高度小于动物类型的最小高度,则以下列表将错误地排序:
breeze.EntityQuery.from("Animal").orderBy("height, toAnimalType.minimalHeight", true);
我正在考虑以下范围内的内容:
breeze.EntityQuery.from("Animal").orderBy("max(height, toAnimalType.minimalHeight)", true);
我查看了 OData functions under chapter 4.5,但我认为这是错误的方式,因为 A) 没有 min
/max
和 B) 这些是 $filter
-函数(不是 orderBy 函数)
我会首先考虑在提取数据时将计算列添加到数据中,这样您就可以将该列用于 orderBy。故障排除也更加清晰。
参考约翰爸爸的模型工厂:
(function() {
'use strict';
var serviceId = 'model';
angular.module('app').factory(serviceId, model);
function model() {
// revealing module pattern
var entityNames = {
client: 'Client',
order: 'Order'
... other entity names
};
var service = {
configureMetadataStore: configureMetadataStore,
entityNames: entityNames
};
return service;
function configureMetadataStore(metadataStore) {
registerClient(metadataStore);
};
//#region Internal Methods
function registerClient(metadatastore) {
metadatastore.registerEntityTypeCtor('Client', client);
function client() {
// add calculated 'display' property to client model
// here is where you'd decide min or max
Object.defineProperty(client.prototype, 'display', {
get: function() {
var cn = this.companyName;
var st = this.state;
return cn.padRight('.',60) + st;
}
});
}
已经有几年没有使用它了,因为我现在使用所有 ng4 和 Typescript,所以它可能有点粗糙,但可能会给你一个想法。推荐所有这些东西的 Pluralsight 课程。看看您是否可以在 github 上找到 Angular 的 John Papa's Hot Towel Spa 的示例代码。