2017-07-19 47 views
0

我不确定这是一件轻而易举的事情还是一个OData问题:我想使用orderBy,但使用两个属性的max微风/ OData:orderBy“最大”的两个属性

因此,例如下面将列表排序错误如果动物没有指定的高度或高度比动物类型的最小高度较小:

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 -functions(不排序依据函数)

回答

0

在谈到约翰爸爸的模范工厂:

(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和打字稿现在所以它可能是一个有点粗糙,但可以给你一个想法。推荐所有这些东西的Pluralsight课程。看看你能否在github上找到John Papa的Hot Towel Spa for Angular的示例代码。

+0

这是一个好主意。我想我将不得不求助于此,因为我无法告诉Breeze/OData/EF/SQL以我想要的方式排序。我希望我不需要在客户端做任何工作,只需按照我需要的方式将结果排序即可。我也可以通过结果数组进行“手动”排序。 **供参考:**这是Angular JS。 – NoRyb

0

我会先看看在拉数据时向数据添加一个计算列,以便您可以将该列用于orderBy。对于故障排除也很干净。

+0

该建议是有效的,但不幸的是我在一个平台的环境,不允许我在数据库中创建新的列。我只能配置查询。我希望能够从客户端做到这一点,而不必涉及db-admins和更改模型。 – NoRyb

+0

这是Angular 2+吗?如果您使用客户端打字稿模型,您可以在那里计算属性(参见Ideablade的temphire示例),然后进行排序。如果在Angular.js中,我认为你仍然可以在你的元数据存储上的模型工厂中做类似的事情。 John Papa在他的Spa框架中有这样的例子..(Pluralsight,但是认为他在公共场合也有) –