Breezejs投影不适用于引用一个到多个导航器

时间:2014-08-17 01:33:25

标签: breeze

我有以下型号: 1人对多参与者('登记'是导航员)

如果我只想要这个人的姓名和所有注册的日期,这不起作用:

EntityQuery.from('Person').where('id','eq',id)
           .select('firstName, lastName, enrollments.dateEnrolled')
           .execute()

我收到错误:

 Unable to locate property 'DateEnrolled' on type 
'System.Collections.Generic.ICollection`1[EntityClasses.Participant]'

一对多关系字段投影的正确语法是什么?

2 个答案:

答案 0 :(得分:0)

在单个查询中没有很好的方法来表达这一点。您可以获得所有“注册”,但您需要在客户端上选择“dateEnrolled”。

EntityQuery.from('Person').where('id','eq',id)
       .select('firstName, lastName, enrollments').expand("enrollments")
       .execute().then(function(data) {
       // extract "dateEnrolled" from data.results
});

或者,您可以在执行投影的服务器上使用“命名查询”,只需从客户端查询投影。

或者更好的方法是颠倒你的查询。这样的事情:(假设你的'注册'类型上有一个名为'Person'的标量属性)。

EntityQuery.from('Enrollments').where('person.id','eq',id)
       .select('person.firstName, person.lastName, dateEnrolled').expand("person")
       .execute().then(...);

答案 1 :(得分:0)

我在breeze.server.net的分支上工作了这个:https://github.com/eggers/breeze.server.net/tree/property-of-collection-25