我有以下型号: 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]'
一对多关系字段投影的正确语法是什么?
答案 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