Breezejs投影不适用于引用一对多导航器
我有以下型号: 1人对多参与者(“注册”是导航) 如果我只想知道此人的姓名和所有注册的日期,那么这不起作用:Breezejs投影不适用于引用一对多导航器,breeze,Breeze,我有以下型号: 1人对多参与者(“注册”是导航) 如果我只想知道此人的姓名和所有注册的日期,那么这不起作用: EntityQuery.from('Person').where('id','eq',id) .select('firstName, lastName, enrollments.dateEnrolled') .execute() 我得到一个错误: Unable to locate property 'DateEnrolled' on typ
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]'
在一对多关系上投影字段的正确语法是什么?在单个查询中没有真正好的方法来表达这一点。您可以获得所有“注册”,但需要在客户端上选择“DateRegistered”
EntityQuery.from('Person').where('id','eq',id)
.select('firstName, lastName, enrollments').expand("enrollments")
.execute().then(function(data) {
// extract "dateEnrolled" from data.results
});
或者,您可以在执行投影的服务器上使用“命名查询”,只需从客户端查询投影即可
或者更好的方法是反转查询,类似这样:(假设“注册”类型中有一个名为“Person”的标量属性)
我在breeze.server.net的fork上实现了这一点:你能提供一个命名查询的示例吗?它只是一个返回DTO集合的webApi服务器方法吗?它只是一个返回DTO的webApi服务器方法,例如,请参见(“将参数传递到服务器”子主题).但是…为了简单起见,我的最后一个建议,即反转查询,是我真正建议的。谢谢,不幸的是,我有很多关系需要引入,而不仅仅是一个,所以我相信最后一个建议已经过时了。我将尝试一下DTO选项。你找到了比下面的建议更好的方法吗?
EntityQuery.from('Enrollments').where('person.id','eq',id)
.select('person.firstName, person.lastName, dateEnrolled').expand("person")
.execute().then(...);